我有一个GroupBox,里面有6个checkBox。我希望在检查GroupBox时检查它们,并在取消选中GroupBox时取消选中,就像切换所有这些一样。
类似的东西:
for box in self.GroupBox.findChildren(QtGui.QCheckBox):
if self.GroupBox.isChecked()==True:
box.setChecked ==True
else:
pixel_box.setChecked == False
我该怎么做?
答案 0 :(得分:0)
每次QGroupBox
更改时都必须进行这些更改,因此它会提供切换信号,因此将连接一个插槽并进行更改。
根据docs:
可检查:bool
此属性保存组框的标题中是否有复选框
如果此属性为true,则组框使用a显示其标题 复选框代替普通标签。如果选中该复选框, 群组框的孩子已启用;否则,他们是残疾人 不可访问。
从上面可以看出孩子们是残疾人,这是一个意想不到的情况,但我们的目的是启用它。
从以上所有方面来看,应该做到以下几点:
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
实现上述内容的示例如下:
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setLayout(QtGui.QVBoxLayout())
self.GroupBox = QtGui.QGroupBox(self)
self.GroupBox.setLayout(QtGui.QVBoxLayout())
for i in range(6):
checkbox = QtGui.QCheckBox("{}".format(i), self.GroupBox)
self.GroupBox.layout().addWidget(checkbox)
self.layout().addWidget(self.GroupBox)
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())