Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt中复选框的列表视图_Python_Qt_Pyqt_Qitemdelegate_Qlistview - Fatal编程技术网

Python PyQt中复选框的列表视图

Python PyQt中复选框的列表视图,python,qt,pyqt,qitemdelegate,qlistview,Python,Qt,Pyqt,Qitemdelegate,Qlistview,我想显示一个QListView,其中每个项目都是带有一些标签的复选框。复选框应始终可见。我可以想到的一种方法是使用自定义委托和QAbstractListModel。有更简单的方法吗?您能提供最简单的代码片段来实现这一点吗 提前感谢如果您正在编写自己的模型,只需包含Qt.ItemIsUserCheckable 在flags()方法的返回值中标记,并确保返回 来自data()方法的Qt.CheckStateRole的有效值 如果您使用QStandardItemModel类,请包括Qt.ItemIsU

我想显示一个QListView,其中每个项目都是带有一些标签的复选框。复选框应始终可见。我可以想到的一种方法是使用自定义委托和QAbstractListModel。有更简单的方法吗?您能提供最简单的代码片段来实现这一点吗


提前感谢

如果您正在编写自己的模型,只需包含
Qt.ItemIsUserCheckable
flags()
方法的返回值中标记,并确保返回 来自
data()
方法的
Qt.CheckStateRole
的有效值

如果您使用
QStandardItemModel
类,请包括
Qt.ItemIsUserCheckable
标记传递给每个项的
setFlags()
方法的内容,并设置检查
Qt.CheckStateRole
及其
setData()方法的状态

在交互式Python会话中,键入以下内容:

from PyQt4.QtGui import *

model = QStandardItemModel()
item = QStandardItem("Item")
item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
item.setData(QVariant(Qt.Checked), Qt.CheckStateRole)
model.appendRow(item)

view = QListView()
view.setModel(model)
view.show()

我最终使用PyQt邮件列表中提供的方法。下面是一个基于他的代码的工作片段:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
from random import randint


app = QApplication(sys.argv)

model = QStandardItemModel()

for n in range(10):                   
    item = QStandardItem('Item %s' % randint(1, 100))
    check = Qt.Checked if randint(0, 1) == 1 else Qt.Unchecked
    item.setCheckState(check)
    item.setCheckable(True)
    model.appendRow(item)


view = QListView()
view.setModel(model)

view.show()
app.exec_()

注意:将具有检查角色的
setData
调用更改为
setCheckState
,并使用
setCheckable
而不是标志。

切换此类项/复选框时会发出什么信号(如果有)?回答我自己,
model.itemChanged
可以使用,如下所示:什么信号(如果有)当该项/复选框高亮显示但未切换时,是否会发出?