--icon 选项不适用于 Qt > 5.5 中的 QApplication
--icon option doesn't work with QApplication in Qt > 5.5
我想显示用户为应用程序提供的命令行参数,例如:
./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版本无法处理它。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 文本文件中的单词链表
- 递归函数计算序列中的平方和(并输出过程)
- 如何从C++中的依赖类型中获得它所依赖的类型
- C++中的"inline"关键字
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 用C++中的一个变量定义一个常量
- vector.resize()中的分配错误
- 如何为应用程序中的某些按钮重置QApplication::styleSheet?
- --icon 选项不适用于 Qt > 5.5 中的 QApplication
- Qt/embedded中的手动事件处理(不使用QApplication:exec())
- QApplication是惰性的(或者使应用程序中的其他线程变为惰性的)
- 在Qt中隐藏和重新启动相同的QApplication实例