我有一个名为“selectAllCheckBox”的复选框。当处于选中状态时,列表视图中的所有复选框(动态创建)应更改为选中状态,当“selectAllCheckBox”复选框处于未选中状态时,所有动态创建的复选框都应更改为未选中状态。
self.dlg.selectAllCheckBox.stateChanged.connect(self.selectAll)
def selectAll(self):
"""Select All layers loaded inside the listView"""
model = self.dlg.DatacheckerListView1.model()
for index in range(model.rowCount()):
item = model.item(index)
if item.isCheckable() and item.checkState() == QtCore.Qt.Unchecked:
item.setCheckState(QtCore.Qt.Checked)
上面的代码使得即使“SelectAllCheckBox”处于未选中状态,列表视图中的动态复选框也会处于Checked状态。请帮我用python解决这个问题。有没有什么可以在信号中完成,例如当“选中”或“未选中”复选框连接到插槽而不是stateChanged?
答案 0 :(得分:2)
stateChanged信号发送checked state,因此可以将插槽重写为:
def selectAll(self, state=QtCore.Qt.Checked):
"""Select All layers loaded inside the listView"""
model = self.dlg.selectAllCheckBox.model()
for index in range(model.rowCount()):
item = model.item(index)
if item.isCheckable():
item.setCheckState(state)
(注意:如果列表视图中的所有行都有复选框,则可以省略isCheckable
行)