我想显示该用户为应用程序提供的命令行参数,例如:
./ToolOne --name
当我尝试从Qt 5.3.2中的QApplication对象获取参数时,一切正常。 但是,在使用Qt 5.6.1或5.11.3之后,一切正常,除了选项
--icon
无论-i
还是--ico
,其他任何单词都有效。除了--icon
...之外,当QApplication()使用此参数时,它就消失了。
我的主要功能:
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStringList arguments = a.arguments();
// If argv has --icon, under Qt >= 5.6, arguments list will NOT contain icon
MainWindow w( arguments.join(" ") );
w.show();
return a.exec();
}
--icon
参数仅在QApplication构造函数中消失。值得一提的是,当我使用QCoreApplication时,它可以在所有系统上完美运行。
我试图在Qt中找到任何特殊处理或任何错误报告,但没有结果。 如果那很重要,我已经检查了它:
链接带有一个小例子: https://drive.google.com/drive/folders/1TGJIbzTkotnHbymTC3xDa-0PFAfG1w4n?usp=sharing
答案 0 :(得分:5)
this code from Qt 5.5似乎-icon
是-qwindowicon
的同义词:
} else if (arg == "-qwindowicon" || (isXcb && arg == "-icon")) {
if (++i < argc) {
icon = QString::fromLocal8Bit(argv[i]);
}
}
这就是使用Xcb时将其删除的原因。我有种预感(没有时间去验证),对于使用Xcb的应用程序来说,它多少有些标准命令行参数,这就是为什么Qt在使用Xcb时会对其进行解析的原因。
整个图标命令行选项似乎已在5.4中添加,以挖掘版本历史记录。 Qt 5.3 version of that source file无法处理。