3

我注意到应用程序main.cpp中的Qt必须包含以下行:

QApplication app(argc, argv);

我知道这argc是命令行参数的数量,并且argv是命令行参数的数组列表。但是,我心中的问题是:我传递给构造函数但同时又不能明确看到的那些参数是什么?是什么在幕后工作?

谢谢。

4

4 回答 4

2

从查看您的评论到其他答案,我想您想知道如果您不指定任何参数,则传递给您的可执行文件的参数。我不确定它是否是标准化的或可能有什么异常,但通常在这种情况下,argc它将是1并且argv[0]将是一个字符串,它指定用于调用可执行文件的命令。

假设您的可执行文件被调用app并驻留在/home/user/appdir.

如果您的当前目录是应用程序目录并且您使用 'app' 启动它,那么argc将会是.1argv[0]app

如果您是应用程序目录的上一级目录并调用它,./appdir/app那么argc将是1,我相信argv[0]会是appdir/app

如果您在调用应用程序时确实指定了参数;也许您想告诉您的应用程序像这样输出调试信息app debug。在这种情况下,argc将是2argv[0]将是appargv[1]将是debug

于 2011-04-25T02:05:59.290 回答
2

Qt 应用程序支持一些命令行参数。例如app.exe -style motif在 Windows 上很有趣。基本上,在此构造函数中,您将参数传递给 QApplication 类以便对其进行解析。

当然,您可以自由地将任何内容传递给 QApplication,如下所示:

int c=1; char** v = &argv[0]; QApplication app(c,v);所以 Qt 不会解析任何东西,也不会接受任何命令行参数。

关于 argc 和 argv 范围,如果您将其传递给 QApplication,您可以从您想要的每个点访问它们。如果您不将它们传递给 QApplication,则必须小心自己使它们成为全球性的。

于 2011-04-24T13:00:22.173 回答
2

没有隐藏的论点。您可以明确地看到每个参数 - argc, argv. 幕后的那行代码中没有任何内容。

于 2011-04-24T11:09:41.070 回答
0

如果您要问QApplication参数有什么用,那么答案就在 docs 中。该页面列出了 Qt 识别的参数。

于 2011-04-24T11:27:43.143 回答