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为假,取消信号阻塞。如果信号被阻塞,被发射的信号消失在超空间。

实际应用:

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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM