请看一下图片。底部小部件是一个列表小部件。它的工作原理是这样的。当您单击插入按钮时,一个新的 QListWidgetItem 将动态添加到底部的 ListWidget 中。现在小部件中有三个项目。每个项目可能包含复选框、组合框、行编辑等。
我需要从 listWidgetItem 获取所有这些数据。不幸的是,listwidgetitem.text()
是我从项目中检索数据的唯一方法。
那么该怎么做,才能获取所有这些数据。
最佳答案
您可以在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
以及 QLineEdits
和 QComboBoxes
用于编辑数据。
关于python - 从 PyQt4 ListWidgetItem 获取所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36199121/