我注意到应用程序main.cpp
中的Qt
必须包含以下行:
QApplication app(argc, argv);
我知道这argc
是命令行参数的数量,并且argv
是命令行参数的数组列表。但是,我心中的问题是:我传递给构造函数但同时又不能明确看到的那些参数是什么?是什么在幕后工作?
谢谢。
从查看您的评论到其他答案,我想您想知道如果您不指定任何参数,则传递给您的可执行文件的参数。我不确定它是否是标准化的或可能有什么异常,但通常在这种情况下,argc
它将是1
并且argv[0]
将是一个字符串,它指定用于调用可执行文件的命令。
假设您的可执行文件被调用app
并驻留在/home/user/appdir
.
如果您的当前目录是应用程序目录并且您使用 'app' 启动它,那么argc
将会是.1
argv[0]
app
如果您是应用程序目录的上一级目录并调用它,./appdir/app
那么argc
将是1
,我相信argv[0]
会是appdir/app
如果您在调用应用程序时确实指定了参数;也许您想告诉您的应用程序像这样输出调试信息app debug
。在这种情况下,argc
将是2
,argv[0]
将是app
,argv[1]
将是debug
。
Qt 应用程序支持一些命令行参数。例如app.exe -style motif
在 Windows 上很有趣。基本上,在此构造函数中,您将参数传递给 QApplication 类以便对其进行解析。
当然,您可以自由地将任何内容传递给 QApplication,如下所示:
int c=1; char** v = &argv[0]; QApplication app(c,v);
所以 Qt 不会解析任何东西,也不会接受任何命令行参数。
关于 argc 和 argv 范围,如果您将其传递给 QApplication,您可以从您想要的每个点访问它们。如果您不将它们传递给 QApplication,则必须小心自己使它们成为全球性的。
没有隐藏的论点。您可以明确地看到每个参数 - argc, argv
. 幕后的那行代码中没有任何内容。
如果您要问QApplication
参数有什么用,那么答案就在 docs 中。该页面列出了 Qt 识别的参数。