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