QListWidget:更改选择而不触发selectionChanged

时间:2015-07-10 13:00:06

标签: qt qt5 pyqt5 qlistwidget selectionchanged

我正在使用QListWidget来控制和显示某些状态。

现在要控制状态,使用窗口小部件中的用户选择。 为了回应这个问题,我已经连接了selectionChanged信号。

然而,状态可以自己改变,当发生这种情况时,我有一个完整的新状态,并希望选择改变。

为了实现这一点,我正在迭代状态和这样的项目:

    for item, s in zip(items, state):
        item.setSelected(s)

然而,这会触发selectionChanged(即使在每次迭代中也是如此) 我根本不希望这种情况发生。

还有另一种方法来回应选择变化吗?

1 个答案:

答案 0 :(得分:4)

您只需使用QSignalBlocker课程即可。在调用发出信号的函数之前,实例化QSignalBlocker对象。

// ui->ListWidget is available.
{
    QSignalBlocker blocker( ui->ListWidget );
    for ( auto item : items )
    {
        item->setSelected();
    }
}