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