请看一下图片。底部小部件是一个列表小部件。它的工作原理如下。当您单击插入按钮时,将在底部ListWidget中动态添加新的QListWidgetItem。现在小部件中有三个项目。每个项目可能包含CheckBoxes,ComboBoxes,lineEdit等..
我需要从listWidgetItem获取所有这些数据。不幸的是,CREATE OR REPLACE FUNCTION INSERT_DATA
RETURN VARCHAR2
AS
BEGIN
INSERT INTO T_ITEMS (cd_1,cd_2,cd_3)
(SELECT cd_1,cd_2,cd_3 FROM REC_ITEMS);
COMMIT;
RETURN 'Return 1 if All is OK else return 0';
END;
是我可以从项目中检索数据的唯一方法。
然后该怎么做才能获得所有这些数据。
答案 0 :(得分:1)
你不应该(通常)使用QListItemWidget,而是使用正确的QAbstractItemModel子类。有了它,您可以使用您想要的任何数据来支持listwidget,并访问该数据。
有一个实用类可用,已经被称为QStandardItemModel,它继承自QAbstractItemModel,应该让你快速入门。
答案 1 :(得分:1)
您可以在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
和QComboBoxes
进行编辑数据。