我有一個QTreeWidget與兩個級別。父級是下面的第一級和子級。我希望父級包含複選框,但我希望孩子沒有複選框。在下面的例子中,每個QTreeWidgetItem顯示一個複選框。如果我刪除「child.setCheckState(0,Qt.Unchecked)」,那麼所有複選框消失,而不僅僅是子複選框。QTreeWidgetItem隱藏子複選框,但不是父複選框
如何隱藏子複選框,但不是父複選框?
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys
def main():
app = QApplication (sys.argv)
tree = QTreeWidget()
headerItem = QTreeWidgetItem()
item = QTreeWidgetItem()
for i in xrange(2):
parent = QTreeWidgetItem(tree)
parent.setText(0, "Parent {}".format(i))
parent.setFlags(parent.flags() | Qt.ItemIsTristate | Qt.ItemIsUserCheckable)
parent.setExpanded(True)
parent.setCheckState(0, Qt.Unchecked)
for x in xrange(3):
child = QTreeWidgetItem(parent)
child.setFlags(child.flags() & ~(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable))
child.setText(0, "Child {}".format(x))
#child.setCheckState(0, Qt.Unchecked)
tree.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
好的。我的示例代碼與我的真實代碼不匹配。我在上面的示例中添加了您的建議和m7913d的建議。不幸的是,孩子複選框仍然可見。 – panofish
你完全刪除了代碼「child.setCheckState(0,Qt.Unchecked)」 – Naidu
我仍然在代碼中看到這個「child.setCheckState(0,Qt.Unchecked)」。請完全刪除 – Naidu