python - 从 PyQt4 ListWidgetItem 获取所有数据

标签 python pyqt pyqt4

请看一下图片。底部小部件是一个列表小部件。它的工作原理是这样的。当您单击插入按钮时,一个新的 QListWidgetItem 将动态添加到底部的 ListWidget 中。现在小部件中有三个项目。每个项目可能包含复选框、组合框、行编辑等。

enter image description here

我需要从 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/

相关文章:

python - 阐明在 Python 中使用管道和子进程?

python - 带有 Django 的 Gunicorn 给出了静态文件的问题

python - 特定小部件的 PyQt/PySide 键盘快捷键

python - 在 QTableWidget 中的列标题下添加边框

python - PyQt4 : check the window is existing or not

python - Distcp 与 Hadoop 流作业

python - 在同一项目中的应用程序之间传递 url

python - 如何使 QLabel 的边框看起来像 QTreeWidget 等其他小部件的边框?

python - 在布局中移动小部件 pyqt

python - 使用 QLabel 在 PyQt GUI 中显示 gif