在下面的代码中,我创建一个窗口,调用window.show()
,但窗口直到之后才显示window->iterateSolution()
叫做。几乎就好像,app.exec()
是显示窗口的函数。我对 Qt 很陌生,所以我不知道发生了什么。
#include <QtGui/QApplication>
#include <mainWindow.h>
#include <Cube.h>
mainWindow * newWindow;
int main(int argc, char *argv[]) {
// initialize resources, if needed
// Q_INIT_RESOURCE(resfile);
QApplication app(argc, argv);
newWindow = new mainWindow;
newWindow->show();
QString initialState = "YWOBYYBYYGRRGRRBWWYOOYGGRGGBBGYOOYOOWRRBBRBBWGOOGWWRWW";
/* Construct cube, set state, and solve */
Cube * cube = new Cube(initialState);
QString solution = cube->solve();
delete cube;
newWindow->iterateSolution(solution);
// create and show your widgets here
return app.exec();
}
这正是正在发生的事情。
从技术上讲,QMainWindow::show() 并不使窗口可见,它只是在窗口中设置一个标志,Qt 将使其在事件循环的下一次迭代中可见。
另外,直接来自 Qt 关于 QApplication::exec() 的文档:
需要调用这个函数
开始事件处理。主要的
事件循环接收来自
窗口系统并将它们分派给
应用程序小部件。
一般来说,没有用户交互可以
在调用 exec() 之前发生。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)