从ListWidgetItem PyQt4获取所有数据

2024-04-20 14:44:57 发布

您现在位置:Python中文网/ 问答频道 /正文

请看这张照片。底部小部件是一个列表小部件。就像这样。当您单击insert按钮时,一个新的QListWidgetItem将动态添加到底部的ListWidget中。现在小部件中有三个项目。每个项目可以包含复选框、组合框、lineEdit等。。在

enter image description here

我需要从listWidgetItem获取所有这些数据。不幸的是,listwidgetitem.text()是我从项中检索数据的唯一方法。 那么我们该怎么做才能得到这些数据。在


Tags: 数据项目text列表部件动态按钮照片
2条回答

您可以在QListWidgetItem上存储多个任意数据段(实际上,所有小部件都支持这一点)。您需要为数据定义一个自定义角色。

Data1Role = QtCore.Qt.UserRole + 1
Data2Role = QtCore.Qt.UserRole + 2

item = QtGui.QListWidgetItem()
item.setData(Data1Role, 'Any data')
item.setData(Data2Role, 42)

print item.data(Data1Role)
# "Any data"

但是,这些数据不会显示在QListWidgetItem上的任何地方。默认情况下唯一显示的数据是QtCore.Qt.DisplayRole上的数据集(这是text()setText()使用的数据集)。

最好使用QTreeWidget,它支持多个列(用于多个数据段),并创建一个自定义的QTreeWidgetItem子类。如果希望用户能够编辑表中的数据,那么还需要创建一个QItemDelegate来创建用于编辑数据的QLineEdits和{}。

您不应该(通常)为此使用QListItemWidget,而应该使用一个适当的qabstractemmodel子类。这样,您就可以使用您想要的任何数据来支持listwidget,并访问这些数据。

有一个实用程序类已经被称为QStandardItemModel,它继承了qabstractemmodel,应该可以让您快速入门。

Custom QStandardItemModel with custom data method

相关问题 更多 >