介绍

冻结组件的所有信号,利用生命周期,自动解除冻结。

使用

  1. #include <VBlockSignals.h>

功能

  1. VBlockSignals(QWidget * obj);
  2. // 冻结所有信号
  3. void block(bool bBlock = true);

实例

VBlockSignals对象创建,将会冻结组件的所有信号,函数结束,VBlockSignals对象的生命周期结束,自动恢复所有信号。也可以通过 block(false) 手动恢复。

  1. //信号槽关联
  2. connect(ui->listWidget_block, SIGNAL(currentTextChanged(QString)),
  3. this, SLOT(onTestBlock(QString)));
  4. void onTestBlock(const QString &title)
  5. {
  6. //槽函数
  7. qDebug() << title;
  8. }
  9. void onTest()
  10. {
  11. VBlockSignals block(ui->listWidget_block); //可以通过注释这句,来查看VBlockSignals的作用
  12. ui->listWidget_block->clear();
  13. for ( int n = 0; n < 100; ++n) {
  14. ui->listWidget_block->addItem(QString("Item - %1").arg(n));
  15. ui->listWidget_block->setCurrentRow(n);
  16. }
  17. }