qt - QListWidget:更改选择而不触发selectionChanged

标签 qt qt5 pyqt5 qlistwidget selectionchanged

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

现在为了控制状态,使用小部件中的用户选择。 为了回应这一点,我连接了 SelectionChanged 信号。

但是状态可以自行更改,当发生这种情况时,我有一个全新的状态并希望更改选择。

为了实现这一点,我正在迭代状态和项目,如下所示:

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

但是这会触发选择更改(即使在每次迭代中) 我根本不希望这种事发生。

还有其他方法来响应选择更改吗?

最佳答案

您可以简单地使用QSignalBlocker类(class)。在调用发出信号的函数之前,请实例化一个 QSignalBlocker 对象。

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

关于qt - QListWidget:更改选择而不触发selectionChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31341442/

相关文章:

c++ - 无模式 QDialog : closeEvent() not called when application exits?

c++ - XSLT 到 HTML 的转换。 Qt5中的generate-id()错误

c++ - 为什么 qmake 将所有对象 (.o) 文件放到一个目录中?

c++ - 如何突出显示特定的 `QWidget`

c++ - QFileInfo 是否与文件同步?

python - 如何防止PyQt Line Edit和Message Box陷入无限循环?

python - 如何在所有存储在一个大列表中的列表中搜索匹配项

python - 如何将线程添加到 PyQt5 GUI?

c++ - Qt QFileSystemModel - 根索引下的多个目录树

c++ - 如何为 Linux 捆绑应用程序?