到目前为止我做了什么:
我正在实现一个自定义的QAbstractTableModel
(在QTableView
小部件中使用),其中包含可编辑单元格。这些单元格的属性在我的flags()
方法中指定,如下所示:
def flags(self, index): # Qt was imported from PyQt4.QtCore
if index.column() < 2:
return Qt.ItemIsEditable | Qt.ItemIsEnabled | \
Qt.ItemIsSelectable
else:
return Qt.ItemIsEnabled | Qt.ItemIsSelectable
第一列和第二列的单元格已经被标记为可编辑,就像我想要的那样。
我的需求:
然而,当双击单元格以触发编辑时,其中的文本会被删除,留下一个空白字段。
但是,我不想删除和替换包含的文本,因为包含的文本可能非常长,不应该重新输入。我只想编辑已经包含的内容。当双击单元格时,应该可以编辑先前包含的文本(可能已经被选中)。
问题:
如何实现这种行为?我需要编辑我的标志方法并为这些单元格指定不同的属性吗?
QStandardItemModel
不能满足你的需求吗?如果你只想控制标志,你可以在创建项目时设置它们。这不必是模型上的动态函数。 - Brendan AbelQTreeWidget
、QTableWidget
等)通常就足够了,而且通常编码和创建速度更快,代码也更简单。 - Brendan Abel