我正在使用QListWidget来控制和显示某些状态。
现在要控制状态,使用窗口小部件中的用户选择。 为了回应这个问题,我已经连接了selectionChanged信号。
然而,状态可以自己改变,当发生这种情况时,我有一个完整的新状态,并希望选择改变。
为了实现这一点,我正在迭代状态和这样的项目:
for item, s in zip(items, state):
item.setSelected(s)
然而,这会触发selectionChanged(即使在每次迭代中也是如此) 我根本不希望这种情况发生。
还有另一种方法来回应选择变化吗?
答案 0 :(得分:4)
您只需使用QSignalBlocker
课程即可。在调用发出信号的函数之前,实例化QSignalBlocker
对象。
// ui->ListWidget is available.
{
QSignalBlocker blocker( ui->ListWidget );
for ( auto item : items )
{
item->setSelected();
}
}