我注意到main.cpp
应用中的Qt
必须包含以下行:
QApplication app(argc, argv);
我知道argc
是命令行参数的数量,argv
是命令行参数的数组列表。但是,我脑海中的问题是:我传递给构造函数的那些参数是什么,同时无法明确地看到?这些场景背后的工作是什么?
感谢。
答案 0 :(得分:2)
没有隐藏的论点。您可以明确地看到每个参数 - argc, argv
。幕后的那一行代码中没有任何内容。
答案 1 :(得分:2)
Qt应用程序支持一些命令行参数。例如,Windows上的app.exe -style motif
很有趣。基本上,在此构造函数中,您将参数传递给QApplication类,以便对它们进行解析。
当然,您可以自由地将任何内容传递给QApplication,如下所示:
int c=1; char** v = &argv[0]; QApplication app(c,v);
所以Qt不会解析任何内容,也不会接受任何命令行参数。
关于argc和argv范围,如果您再传递给QApplication,您可以从所需的每个点访问它们。如果你没有将它们传递给QApplication,你必须小心自己使它们成为全球性的。
答案 2 :(得分:2)
从查看您的评论到其他答案,我想如果您没有指定任何参数,您想知道传递给您的可执行文件的参数。我不确定它是标准化的还是异常可能是什么,但通常在这种情况下,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
。
答案 3 :(得分:0)
如果您询问QApplication
对参数的作用,那么答案是in the docs。该页面列出了Qt。