QApplication应用程序(argc,argv)

时间:2011-04-24 11:04:54

标签: c++ qt main argv argc

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

QApplication app(argc, argv);

我知道argc是命令行参数的数量,argv是命令行参数的数组列表。但是,我脑海中的问题是:我传递给构造函数的那些参数是什么,同时无法明确地看到?这些场景背后的工作是什么?

感谢。

4 个答案:

答案 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将是1argv[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

答案 3 :(得分:0)

如果您询问QApplication对参数的作用,那么答案是in the docs。该页面列出了Qt。

识别的参数