QApplication::processEvents()的循环调用问题

在Qt程序的信号槽(事件处理)函数中调用QApplication::processEvents()时需特别注意,因为这可能导致对当前信号槽函数的无限循环调用,尤其是重负载的情况。

可以考虑引入一个IsRunning变量,避免槽函数的循环调用:

bool IsRunning = false;
 
void SignalSlot(){
    if (IsRunning) {
        return;
    }
    else{
        IsRunning=true;
    }
 
    //Handle event
 
    IsRunning=false;
    return;
}

参考资料库:https://forum.qt.io/topic/22434/issue-with-qapplication-processevents

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License