繁体   English   中英

从ListWidgetItem PyQt4获取所有数据

[英]Getting all data from ListWidgetItem PyQt4

请看一下图片。 底部小部件是列表小部件。 它是这样的。 当您单击插入按钮时,新的QListWidgetItem将动态添加到底部的ListWidget中。 现在,小部件中有三个项目。 每个项目可能包含CheckBoxes,ComboBoxes,lineEdit等。

在此处输入图片说明

我需要从listWidgetItem中获取所有这些数据。 不幸的是, listwidgetitem.text()是我可以从项目中检索数据的唯一方法。 接下来该怎么做,以获取所有这些数据。

通常,您不应该使用QListItemWidget,而应该使用适当的QAbstractItemModel子类。 这样,您可以使用所需的任何数据来备份listwidget,并访问该数据。

已经有一个实用程序类称为QStandardItemModel,它从QAbstractItemModel继承而来,可以帮助您快速入门。

使用自定义数据方法的自定义QStandardItemModel

您可以在QListWidgetItem上存储多条任意数据(实际上,所有Item小部件都支持此功能)。 您需要为数据定义自定义角色。

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来创建用于编辑数据的QLineEditsQComboBoxes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM