什么是“QApplication应用程序(argc,argv)”试图做什么?
#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();
}
我的C++有点生疏。有人可以向我解释什么是“QApplication app(argc,argv)”试图做什么?什么是“QApplication应用程序(argc,argv)”试图做什么?
它试图声明一个函数,它需要两个参数(argc和argv)并返回一个类型为QApplication的变量?
下面是从Qt的文档报价:
的的QApplication类管理GUI应用程序的控制流和 主要设置。
QApplication包含主事件循环,其中处理和分派来自 窗口系统和其他源的所有事件。它也 处理应用程序的初始化,最终化,并提供会话管理 。此外,QApplication处理大部分 系统范围和应用程序范围的设置。
对于任何使用Qt的GUI应用程序,只要有一个QApplication 对象,无论应用程序在任何给定时间是否有0,1,2或更多窗口 。对于非GUI Qt应用程序,请改用QCoreApplication ,因为它不依赖于QtGui库。
QApplication对象可通过实例()函数 访问,该函数返回与全局qApp指针等效的指针。
所以,行
QApplication app(argc, argv);
创建的QApplication类的一个实例。
线
QApplication app(argc, argv);
创建QApplication
类型的新实例,并调用这个类的构造函数。在你的例子中,变量app
现在存储这个实例。这是有点(语义)一本简写:
QApplication app = QApplication(argc, argv);
应用程序()是不是一个功能,它是一个构造函数调用。
如果你来自C#或Java类的东西,把它想象成
QApplication app = new QApplication(argc, argv);
只是该应用程序将是一个指针这种方式,而它实际上就是如果像在您的示例中创建的对象本身。
总之,QT需要QApplication
实例来运行,因此信号&插槽被处理(如果你正在使用它们),并像绘画等事件的处理
QApplication的是包含主事件循环Qt的类。
当你写QApplication app(argc, argv);
你创建这个类的一个对象app
,通过调用其构造与argc
和argv
当int main(int argc, char **argv)
运行程序时被调用,int argc
被初始化为包含传递的参数数目同时运行该程序。 char **argv
包含执行时传递给程序的参数数组。
char * argv [0]将包含(指向)程序的名称,而后续元素将指向传递的其他参数。
argc和argv依次传递给QApplication的构造函数,以便在运行程序时可以传递Qt特定的参数。
对于这种参数的一个例子尝试在一个终端窗口运行./yourProgramName --help
为什么语句不需要“新”的关键字 的QApplication应用=新的QApplication(的argc,argv的); – DScript 2015-08-07 18:30:27
@DScript:用'new'你可以动态地在堆上分配一个对象。当你使用'new'时,你会得到一个指针。所以你必须这样做:'QApplication * app = new QApplication(argc,argv);' – Constantinius 2015-08-07 19:06:08