在Qt main函数中,QApplication是如何获知Mainwindow的?
In Qt main function, how does QApplication learn about Mainwindow?
查看几乎每个 Qt 教程中都可以找到的最简单的 Qt Widget 示例应用程序:
#include "notepad.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad w;
w.show();
return a.exec();
}
有一件事让我很困惑。这里有两个主要变量a
和w
。 a.exec()
启动 Qt 的主循环,它假设与主 GUI 组件交互 w
。但是,它们都在堆栈上,我没有看到任何代码以某种方式将 w
传递给 a
。那么a
是如何知道w
的存在的呢?
w
的构造函数是否初始化了一个静态数据结构,a
可以访问该静态数据结构来检查顶级小部件?
Qt 预处理您的代码并在编译之前构建真正的 c++ 代码,此时 QApplication 将所有 Q 对象包装在 main.cpp 文件中并从中构建其余代码。
查看几乎每个 Qt 教程中都可以找到的最简单的 Qt Widget 示例应用程序:
#include "notepad.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Notepad w;
w.show();
return a.exec();
}
有一件事让我很困惑。这里有两个主要变量a
和w
。 a.exec()
启动 Qt 的主循环,它假设与主 GUI 组件交互 w
。但是,它们都在堆栈上,我没有看到任何代码以某种方式将 w
传递给 a
。那么a
是如何知道w
的存在的呢?
w
的构造函数是否初始化了一个静态数据结构,a
可以访问该静态数据结构来检查顶级小部件?
Qt 预处理您的代码并在编译之前构建真正的 c++ 代码,此时 QApplication 将所有 Q 对象包装在 main.cpp 文件中并从中构建其余代码。