pyqt4 单击复选框 space 以外的 space 时单击复选框
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()
只有在我点击复选框 space 时才会被选中。 (
它是图片内的一个圆圈。)
我想通过单击该行中的任意位置来进行检查。(这是图片中的箭头。)我必须做什么?请帮助我。
============================================= ============================
根据您的回答,我进行了调整,但它显示了一个错误。
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)
红圈部分无效。未检查。
你必须连接点击信号,这个returns项目和按下的列,我们将使用项目和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 )
我制作了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()
只有在我点击复选框 space 时才会被选中。 ( 它是图片内的一个圆圈。) 我想通过单击该行中的任意位置来进行检查。(这是图片中的箭头。)我必须做什么?请帮助我。
============================================= ============================
根据您的回答,我进行了调整,但它显示了一个错误。
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)
红圈部分无效。未检查。
你必须连接点击信号,这个returns项目和按下的列,我们将使用项目和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 )