[英]pyqt4 Clicked on a checkbox when clicking a space other than the checkbox space
我做了QTreeWidget。 並在列表中添加了復選框。 所以,我做了下面的代碼。 (self.tableView只是一個空盒子)
self.tree = QtGui.QTreeWidget(self.tableView)
self.tree.setGeometry(QtCore.QRect(0, 0, 471, 131))
self.tree.headerItem().setText(0, "No")
self.tree.headerItem().setText(1, "Header")
self.checkList = []
for i in range(0, len(header)):
self.checkList.append(QtGui.QTreeWidgetItem(self.tree))
self.checkList[i].setText(0, "{}".format(str(i+1)))
self.checkList[i].setText(1, "{}".format(header[i]).decode("utf-8"))
self.checkList[i].setFlags(self.checkList[i].flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable)
self.checkList[i].setCheckState(0, QtCore.Qt.Unchecked)
self.tree.show()
僅當我單擊復選框時才選中它。 (這是圖片內的圓圈。)我想通過單擊該行中的任意位置進行檢查。(這是圖片內的箭頭。)我必須做什么? 請幫我。
================================================== =======================
根據您的回答,我進行了調整,但它顯示了一個錯誤。
def bringColumn(self):
self.tree = QtGui.QTreeWidget(self.tableView)
self.tree.setGeometry(QtCore.QRect(0, 0, 471, 131))
self.tree.headerItem().setText(0, "No")
self.tree.headerItem().setText(1, "Header")
# I added below code.
self.tree.itemClicked.connect(self.onItemClicked)
def onItemClicked(self, item):
item.setCheckState(0, QtCore.Qt.Unchecked if item.checkState(0) == QtCore.Qt.Checked else QtCore.Qt.Checked)
紅色圓圈部分不起作用。 沒有檢查。
您必須連接clicked信號,這將返回項目和按下的列,我們將使用該項目和setChecked方法
self.tree.itemClicked.connect(self.onItemClicked)
def onItemClicked(self, item, column):
item.setCheckState(0, QtCore.Qt.Unchecked if item.checkState(0) == QtCore.Qt.Checked else QtCore.Qt.Checked )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.