我使用一个QListWidget来控制和显示一些状态。
现在要控制状态,要使用小部件中的用户选择。为了响应这个,我连接了selectionChanged信号。
然而,状态可以自己改变,当这种情况发生时,我有一个全新的状态,并希望选择改变。
为了实现这一点,我在状态和项目上迭代,像这样:
for item, s in zip(items, state):
item.setSelected(s)
但是这会触发selectionChanged(即使在每次迭代中)我根本不希望这种事发生。
是否有其他方式响应选择更改?
您可以简单地使用QSignalBlocker
类。在调用发出信号的函数之前,实例化一个QSignalBlocker
对象。
// ui->ListWidget is available.
{
QSignalBlocker blocker( ui->ListWidget );
for ( auto item : items )
{
item->setSelected();
}
}