我在 PyQt 和 Python 中的复选框出现问题

Issue with my Check Box in PyQt and Python

我有一个名为 "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" 处于未选中状态。请帮助我如何使用 python 解决此问题。是否可以在信号中做任何事情,例如当复选框为 "checked" 或 "unchecked" 以连接到插槽而不是 stateChanged 时?

中的stateChanged signal sends the checked state,所以slot可以重写为:

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 行)