簡體   English   中英

pyqt4單擊復選框空間以外的空間時單擊了復選框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM