1

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

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

但我无法为这个项目添加更多内容,我尝试了类似的方法:

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

或者

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

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

4

1 回答 1

1

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_())
于 2013-08-25T10:28:42.653 回答