【发布时间】: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的阴谋论。 :-) 非常感谢您的回复。如果您想要功劳,请将您的评论移至答案,我会接受。