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爲假,取消信號阻塞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章