2024-04-20 14:44:57 发布
网友
请看这张照片。底部小部件是一个列表小部件。就像这样。当您单击insert按钮时,一个新的QListWidgetItem将动态添加到底部的ListWidget中。现在小部件中有三个项目。每个项目可以包含复选框、组合框、lineEdit等。。在
我需要从listWidgetItem获取所有这些数据。不幸的是,listwidgetitem.text()是我从项中检索数据的唯一方法。 那么我们该怎么做才能得到这些数据。在
listwidgetitem.text()
您可以在QListWidgetItem上存储多个任意数据段(实际上,所有项小部件都支持这一点)。您需要为数据定义一个自定义角色。
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()使用的数据集)。
QtCore.Qt.DisplayRole
text()
setText()
最好使用QTreeWidget,它支持多个列(用于多个数据段),并创建一个自定义的QTreeWidgetItem子类。如果希望用户能够编辑表中的数据,那么还需要创建一个QItemDelegate来创建用于编辑数据的QLineEdits和{}。
QTreeWidget
QTreeWidgetItem
QItemDelegate
QLineEdits
您不应该(通常)为此使用QListItemWidget,而应该使用一个适当的qabstractemmodel子类。这样,您就可以使用您想要的任何数据来支持listwidget,并访问这些数据。
有一个实用程序类已经被称为QStandardItemModel,它继承了qabstractemmodel,应该可以让您快速入门。
Custom QStandardItemModel with custom data method
您可以在
QListWidgetItem
上存储多个任意数据段(实际上,所有项小部件都支持这一点)。您需要为数据定义一个自定义角色。但是,这些数据不会显示在
QListWidgetItem
上的任何地方。默认情况下唯一显示的数据是QtCore.Qt.DisplayRole
上的数据集(这是text()
和setText()
使用的数据集)。最好使用}。
QTreeWidget
,它支持多个列(用于多个数据段),并创建一个自定义的QTreeWidgetItem
子类。如果希望用户能够编辑表中的数据,那么还需要创建一个QItemDelegate
来创建用于编辑数据的QLineEdits
和{您不应该(通常)为此使用QListItemWidget,而应该使用一个适当的qabstractemmodel子类。这样,您就可以使用您想要的任何数据来支持listwidget,并访问这些数据。
有一个实用程序类已经被称为QStandardItemModel,它继承了qabstractemmodel,应该可以让您快速入门。
Custom QStandardItemModel with custom data method
相关问题 更多 >
编程相关推荐