2013-08-24 17 views
1

使用Python3.3和PyQt4的Im。我想將幾個複選框添加到qtlistwidget中的某個項目。我可以添加一個用下面的代碼:使用setflags將幾個複選框添加到QListWidgetItem()

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

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

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

但是我不能更多到這個項目,我喜歡的東西試了一下

但兩者都不起作用。有誰知道是否可以添加更多的複選框,或者如果它不是我可以解決這個問題。非常感謝!

回答

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_())