gpt4 book ai didi

python - 如何在 pyqt 中的模型中设置组合框数据

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:05 25 4
gpt4 key购买 nike

通常我将组合框数据设置如下:cbo.addItem("xyz",QVariant(1)) -- xyz 是 cbo 中显示的值,1 是其数据

我正在从 pyqt 模型设置可检查的 cbo 值,如下所示:

model = QtGui.QStandardItemModel(len(cases_array), 1)
for index, case in enumerate(cases_array):
item = QtGui.QStandardItem(case[1])
item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
model.setItem(index, 0, item)
cbo.setModel(model)

效果很好。但是当我执行 cbo.itemData(0).toPyObject() 时,我没有得到任何值。

如何设置cbo数据值。

最佳答案

正如文档指出的:

void QComboBox::addItem(const QString &text, const QVariant&userData = QVariant())

Adds an item to the combobox with the given text, and containing thespecified userData (stored in the Qt::UserRole). The item is appendedto the list of existing items.

userData 与 Qt::UserRole 关联角色,因此您必须使用该角色(或更大的角色)。

考虑到上述情况,我创建了以下示例:

import sys
from PyQt4 import QtCore, QtGui


if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
cases_array = [
("text1", "data1"),
("text2", "data2"),
("text3", "data3"),
("text4", "data4"),
]
cbo = QtGui.QComboBox()
model = QtGui.QStandardItemModel(0, 1)
for index, (text, data) in enumerate(cases_array):
item = QtGui.QStandardItem(text)
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
item.setData(data, QtCore.Qt.UserRole)
model.appendRow(item)
cbo.setModel(model)

def on_current_index_changed(index):
text = cbo.itemText(index)
data = cbo.itemData(index, QtCore.Qt.UserRole)
check_state = cbo.itemData(index, QtCore.Qt.CheckStateRole)
print(index, text, data, check_state)

cbo.currentIndexChanged[int].connect(on_current_index_changed)
cbo.show()
sys.exit(app.exec_())

关于python - 如何在 pyqt 中的模型中设置组合框数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58440283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com