OpenGL:QApplication的执行流程
Posted
技术标签:
【中文标题】OpenGL:QApplication的执行流程【英文标题】:OpenGL: Execution Flow of QApplication 【发布时间】:2015-02-10 21:55:04 【问题描述】:我试图在一些 C++ OpenGL 起始代码中跟踪执行路径,但 main 方法几乎没有做更多的事情:
QApplication app(argc, argv);
MainWindow main_window;
main_window.resize(QSize(width, height));
main_window.show();
return app.exec();
这些是 .h 和 .cpp 文件:
GLShape.h GLTransformStack.h main.cpp Matrix4x4.h
GLState.cpp GLWidget.cpp MainWindow.h
GLState.h GLWidget.h Matrix3x3.h
似乎很明显所有各种功能是什么,但我找不到任何东西被调用/实例化的地方。我怀疑这是 QApplication
在幕后完成的。
QApplication
相对于这些文件有标准的执行流程吗?
特别是,我想创建一个组织为形状树的动画。为此,我尝试添加一个类 PivotGroup,它包含所有与旋转点相关联的形状组。每个 PivotGroup 都有 PivotGroup 子节点的向量,因此可以构造一棵树。
代码创建树的最佳位置在哪里?作为一个小部件,它似乎是有意义的,但我不知道是否正在创建一个或多个小部件。
【问题讨论】:
GLWidget.cpp 看起来像是包含 OpenGL 渲染循环的明显候选者。你看过吗? @Dan:是的。我注意到在 OP 中(也许我不清楚)。但是因为我无法追踪执行路径,我不确定是否正在实例化一个或多个小部件。 GLWidget 类有一个构造函数和一个初始化方法,但运行时的实际实例化似乎不在这些文件中。 通常在 Qt 中使用 OpenGL 时,GLWidget 类将在 MainWindow 类的构造函数中实例化,这两个类都继承自 Qt 类。 @user3256930:亲爱的杰布斯!我怎么错过了?我认为MainWindow
是可能的候选人,不知何故错过了它,然后创造了一个关于QApplication
的阴谋论。 :-) 非常感谢您的回复。如果您想要功劳,请将您的评论移至答案,我会接受。
【参考方案1】:
通常当使用带有 Qt 的 OpenGL 时,GLWidget 类将在 MainWindow 类的构造函数中实例化,这两个类都继承自 Qt 类。您还可以在 MainWindow 中添加其他小部件。
【讨论】:
以上是关于OpenGL:QApplication的执行流程的主要内容,如果未能解决你的问题,请参考以下文章