PyQt / QListWidget:如何编辑数据而不是显示文本?

时间:2011-12-01 07:30:23

标签: pyqt4 qlistwidget

我有一个元组字典:名字对。我在QListWidget中显示名称,但我检索并使用元组 - 名称严格用于显示目的。下面代码中的setFlags行允许我编辑显示名称,但我真正希望能够做的是编辑元组数据。我尝试添加Qt.EditRole位,但最终只有QListWidget中的空白行,因为我的麻烦。如何让用户编辑元组数据(通过用户界面),然后让我的代码查询字典以更新显示名称?

for tuple in tuples:
    name = dict[tuple]
    this_item = QListWidgetItem(name)
    this_item.setData(Qt.UserRole,tuple)
#   this_item.setData(Qt.EditRole, tuple)
    this_item.setFlags(this_item.flags() | Qt.ItemIsEditable)
    self.addItem(this_item)

1 个答案:

答案 0 :(得分:0)

要编辑名称后面的数据,我将在我的QListWidget中添加一个创建自定义编辑环境的方法:

def edit_items(self):
    dialog = MyQDialog(self.parent())
    table = QTableWidget(self.count(),2,dialog)
    for row in range(0, self.count()):
        spec = repr(self.item(row).data(32).toPyObject())
        name = self.item(row).text()
        spec_item = QTableWidgetItem(spec)
        name_item = QTableWidgetItem(name)
        table.setItem(row,0,name_item)
        table.setItem(row,1,spec_item)
    layout = QHBoxLayout()
    layout.addStrut(550)
    layout.addWidget(table)
    dialog.setLayout(layout)
    dialog.show()

然后从那里开始。