什么是"QApplication app(argc,argv)"试图做什么?

use*_*659 5 c++ qt qml

#include <QtGui/QApplication>
#include <QtDeclarative>
#include "qmlapplicationviewer.h"

int main(int argc, char **argv) {
    QApplication app(argc, argv);
    QmlApplicationViewer viewer;

    viewer.setMainQmlFile("app/native/assets/main.qml");
    viewer.showFullScreen();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我的C++有点生疏.有人可以向我解释一下"QApplication app(argc,argv)"试图做什么?

它是否试图声明一个接受2个参数(argc和argv)并返回QApplication类型的变量的函数?

Con*_*ius 10

这条线

QApplication app(argc, argv);
Run Code Online (Sandbox Code Playgroud)

创建一个新的类型实例QApplication并调用该类的构造函数.在您的示例中,变量app现在存储此实例.它在某种程度上(语义上)是这种简写:

QApplication app = QApplication(argc, argv);
Run Code Online (Sandbox Code Playgroud)


Sin*_*all 5

这是 Qt Docs 的引用:

QApplication 类管理 GUI 应用程序的控制流和主要设置。

QApplication 包含主事件循环,所有来自窗口系统和其他来源的事件都在其中处理和分派。它还处理应用程序的初始化、结束并提供会话管理。此外,QApplication 处理大部分系统范围和应用程序范围的设置。

对于任何使用 Qt 的 GUI 应用程序,无论应用程序在任何给定时间是否有 0、1、2 或更多窗口,都恰好有一个 QApplication 对象。对于非 GUI Qt 应用程序,请改用 QCoreApplication,因为它不依赖于 QtGui 库。

QApplication 对象可通过 instance() 函数访问,该函数返回等效于全局 qApp 指针的指针。

所以,线

QApplication app(argc, argv);

创建 QApplication 类的实例。