我正在使用Qt制作一个游戏,并且正在创建自定义的游戏循环,以便我可以精确地控制逻辑时间步长并以最大帧率进行渲染。
通常,要创建一个QWindow,你会这样做:
“exec()”在窗口关闭时返回。但是,我是以下方式执行的:
然而,当窗口关闭时,我的循环仍然在继续。我需要检测窗口何时关闭,以便我的循环可以终止。我已经尝试了以下方法来捕获窗口关闭的情况:
以下槽应该在窗口关闭时被触发,但它从来没有被触发。当我使用
经进一步调查,Qt文档如下所述:
“[lastWindowClosed]在执行exec()时发出,当关闭最后一个可见主窗口(即没有父窗口的窗口)时会触发。”
由于我没有使用exec(),因此该信号未被发出。 有没有其他方法可以检测QWindow何时关闭?
通常,要创建一个QWindow,你会这样做:
...
QGuiApplication app(argc,argv);
QWindow* window = new QWindow();
window.show();
app.exec();
...
“exec()”在窗口关闭时返回。但是,我是以下方式执行的:
QGuiApplication *app = new QGuiApplication(argc,argv);
QWindow* window = new QWindow();
window.show();
while (!terminate_loop) {
app->processEvents();
GameUpdate();
GameRender();
}
app->exit();
然而,当窗口关闭时,我的循环仍然在继续。我需要检测窗口何时关闭,以便我的循环可以终止。我已经尝试了以下方法来捕获窗口关闭的情况:
connect(app,SIGNAL(lastWindowClosed()),this,SLOT(windowClosed()));
以下槽应该在窗口关闭时被触发,但它从来没有被触发。当我使用
app->exec()
而不是手动处理事件时,它确实被触发。void QTEngine::windowClosed() {
terminate_loop = true;
}
经进一步调查,Qt文档如下所述:
“[lastWindowClosed]在执行exec()时发出,当关闭最后一个可见主窗口(即没有父窗口的窗口)时会触发。”
由于我没有使用exec(),因此该信号未被发出。 有没有其他方法可以检测QWindow何时关闭?