问题在PyQt的和Python我复选框(Issue with my Check Box in PyQ

2019-10-23 02:07发布

我有一个名为“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。 是不是有什么事情都可能在信号完成时复选框“选中”或“取消选中”连接到一个插槽,而不是像stateChanged?

Answer 1:

所述stateChanged信号发送选中的状态 ,因此,狭槽可以被重新写为:

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)

(NB:如果在列表视图中的所有行具有复选框,则isCheckable线可以被省略)



文章来源: Issue with my Check Box in PyQt and Python