Qt中blockSignals函数的用法

前面的一篇博客中提到给一个创建了信号槽的ComboBox添加或去除Item时采用的方法是在对该ComboBox操作前先使用disconn函数将信号槽先切断,操作好后在connect。

今天发现有另一种解决方法,就是使用blockSignals函数。

该函数的原型:bool QObject::blockSignals(bool block)

官方解释:If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). If block is false, no such blocking will occur.

理解:如果block为真,阻塞信号,或者如果block为假,取消信号阻塞。如果信号被阻塞,被发射的信号消失在超空间。

实际应用:

ui->deviceComboBox->blockSignals(true);//如果block为真,阻塞信号,或者如果block为假,取消信号阻塞。
        for(int i = 0; i < supportedDevice->getCount(); i++)
        {
            DeviceTreeNode const &node = supportedDevice->getItem(i);
            qDebug<<QString("%1,%2\n").arg(node.DeviceNumber).arg(node.Description);
            QString description = QString::fromWCharArray(node.Description);
            ui->deviceComboBox->addItem(description);
        }
        ui->deviceComboBox->blockSignals(false);//如果block为真,阻塞信号,或者如果block为假,取消信号阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值