--icon 选项不适用于 Qt > 5.5 中的 QApplication

--icon option doesn't work with QApplication in Qt > 5.5

本文关键字:中的 QApplication gt 选项 不适用 适用于 Qt --icon      更新时间:2023-10-16

我想显示用户为应用程序提供的命令行参数,例如:

./ToolOne --name

当我试图从Qt 5.3.2中的QApplication对象获取参数时,一切都正常。然而,在使用Qt 5.6.或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中找到任何特殊处理或任何错误报告,但没有结果。如果这很重要的话,我已经查过了:

  • 带有Qt5.3.2和gcc:4.8.2的CentOS6(适用于)
  • 带有Qt5.3.2和gcc:4.7.2的RedHat 6(有效)
  • RedHat 6,带Qt 5.6.和gcc 4.7.1(失败)
  • RedHat 6,带Qt 5.6.和gcc 4.9.1(失败)
  • 带有Qt 5.9.2和gcc 4.8.5的CentOS 7(失败)
  • 带有Qt5.3.2和gcc 4.8.5的RedHat 7(有效)
  • Fedora 29,Qt 5.11.3和gcc 8.2.1(失败)

链接小示例:https://drive.google.com/drive/folders/1TGJIbzTkotnHbymTC3xDa-0PFAfG1w4n?usp=sharing

根据Qt 5.5:中的代码,-icon似乎是-qwindowicon的同义词

} else if (arg == "-qwindowicon" || (isXcb && arg == "-icon")) {
if (++i < argc) {
icon = QString::fromLocal8Bit(argv[i]);
}
}

这就是为什么在使用Xcb时它会被删除。我有一种预感(没有时间验证),对于使用Xcb的应用程序来说,这或多或少是一些标准的命令行参数,这就是为什么在使用Xcbs时它会被Qt解析的原因。

这个完整的图标命令行选项似乎是在5.4中添加的,在版本历史中挖掘。该源文件的Qt 5.3版本无法处理它。