[英]how to run qt main window in loop avoid Qt app.exec() blocking main thread
我是 Qt 的新手,但需要解决一个难题。
需要在循环中运行 qt 主 window ,其中 app.exec() 将阻塞主 function 直到收到退出。 但我想根据收到的事件在循环中显示和隐藏主 window 以隐藏和显示主 window
这是示例代码,现在我正在使用示例:
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
}
可以调用 qt window 的时间初始化并在循环中隐藏和显示吗?
我需要添加while循环,基于事件隐藏或显示主window将显示和隐藏
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
while(1)
{
//if show status received
if(show)
w.setVisible(true);
// if hide window status received
else if(hide)
w.setVisible(false);
}
}
如何让 app.exe 一直处于活动状态以实现 window 的隐藏/显示? 还有其他 QT api 电话吗?
对于这种情况,Qt 推荐的解决方案是添加一个 QTimer 并将超时设置为零,这将保证您的回调在每个循环中都被调用。
要让您的应用程序执行空闲处理,即在没有未决事件时执行特殊的 function,请使用具有 0 超时的 QTimer。 使用 processEvents() 可以实现更高级的空闲处理方案。
https://doc.qt.io/qt-5/qapplication.html#exec
您可以 go 勇敢地继承 QApplication 并复制/粘贴 exec() 的源代码,但我强烈建议您不要这样做,因为其中的准备和清理代码可以在任何新版本中更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.