我注意到应用程序main.cpp中的Qt必须包含以下行:
QApplication app(argc, argv);
我知道这argc是命令行参数的数量,并且argv是命令行参数的数组列表。但是,我心中的问题是:我传递给构造函数但同时又不能明确看到的那些参数是什么?是什么在幕后工作?
谢谢。
从查看您的评论到其他答案,我想您想知道如果您不指定任何参数,则传递给您的可执行文件的参数。我不确定它是否是标准化的或可能有什么异常,但通常在这种情况下,argc它将是1并且argv[0]将是一个字符串,它指定用于调用可执行文件的命令。
假设您的可执行文件被调用app并驻留在/home/user/appdir.
如果您的当前目录是应用程序目录并且您使用 'app' 启动它,那么argc将会是.1argv[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 识别的参数。