使用setflags()向QListWidgetItem添加多个复选框

2024-10-02 18:25:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是Python3.3和PyQt4。我想给qtlistwidget中的一个项目添加几个复选框。我可以使用以下代码添加一个:

item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)

但我无法添加更多的内容,我尝试了如下内容:

^{pr2}$

或者

item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsUserCheckable)

但两者都不起作用。有没有人知道是否可以添加更多的复选框,或者我无法解决这个问题。非常感谢!在


Tags: 项目代码内容itemqt复选框flagspyqt4
1条回答
网友
1楼 · 发布于 2024-10-02 18:25:53

QListWidgetItem不是以这种方式使用的。无论设置了多少次QtCore.Qt.ItemIsUserCheckable标志,每个项目都将显示一个复选框。如果需要在同一行中显示多个复选框,QTableWidget可能就是您要查找的:

#!/usr/bin/env python
#-*- coding:utf-8 -*-

#    -
# IMPORT
#    -
from PyQt4 import QtGui, QtCore

#    -
# MAIN
#    -
class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        numberRows    = 1
        numberColumns = 2

        self.tableWidget = QtGui.QTableWidget(self)
        self.tableWidget.setRowCount(numberRows)
        self.tableWidget.setColumnCount(numberColumns)

        for rowNumber in range(numberRows):
            for columnNumber in range(numberColumns):    
                item = QtGui.QTableWidgetItem("item {0} {1}".format(rowNumber, columnNumber))
                item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
                item.setCheckState(QtCore.Qt.Unchecked)

                self.tableWidget.setItem(rowNumber, columnNumber, item)

        self.layoutVertical = QtGui.QVBoxLayout(self)
        self.layoutVertical.addWidget(self.tableWidget)

if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.resize(333, 111)
    main.show()

    sys.exit(app.exec_())

相关问题 更多 >