我注意到,main.cpp应用程序中的Qt必须包含以下行:
QApplication app(argc, argv);我知道argc是命令行参数的数量,argv是命令行参数的数组列表。但是,我脑海中的问题是:,我传递给构造函数的那些参数是什么,同时不能显式地看到?什么在外面的侦察中起作用?
谢谢。
发布于 2011-04-24 11:09:41
没有隐藏的争论。您可以显式地看到每个参数- argc, argv。在幕后的代码行中没有任何东西。
发布于 2011-04-24 13:00:22
Qt应用程序支持一些命令行参数。例如,Windows上的app.exe -style motif很有趣。基本上,在这个构造函数中,您将参数传递给QApplication类,以便对它们进行解析。
当然,您可以自由地将任何东西传递给QApplication,如下所示:
int c=1; char** v = &argv[0]; QApplication app(c,v);因此Qt不会解析任何东西,也不会接受任何命令行参数。
关于argc和argv作用域,如果您传递给QApplication,您可以从您想要的任何点访问它们。如果你不把它们传递给QApplication,你必须自己小心,使它们全球化。
发布于 2011-04-25 02:05:59
从您的评论到其他答案,如果您不指定任何参数的话,我想您正在考虑传递给可执行文件的参数。我不确定它是否是标准化的,也不确定异常是什么,但通常情况下,argc将是1,而argv[0]将是指定用于调用可执行文件的命令的字符串。
让我们假设您的可执行文件名为app,驻留在/home/user/appdir中。
如果您的当前目录是应用程序目录,然后使用'app‘启动它,那么argc将是1,argv[0]将是app。
如果您是应用程序目录中的一个目录,并使用./appdir/app调用它,那么argc将是1,我相信argv[0]将是appdir/app
如果在调用应用程序时确实指定了一个参数,则可能需要告诉应用程序输出调试信息,如so app debug。在本例中,argc为2,argv[0]为app,argv[1]为debug。
https://stackoverflow.com/questions/5770154
复制相似问题