Опция --icon не работает с QApplication в Qt> 5.5 - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу отобразить аргумент командной строки, предоставленный пользователем для приложения, например:

./ToolOne --name

Когда я пытаюсь получить аргумент от объекта QApplication в Qt 5.3.2, все работает.Однако после использования 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 аргумент просто исчезает вКонструктор приложений.Стоит отметить, что когда я использую QCoreApplication, он отлично работает во всех системах.

Я пытался найти какую-либо специальную обработку в Qt или любом отчете об ошибке, но безрезультатно.Если это имеет значение, я проверил:

  • CentOS 6 с Qt 5.3.2 и gcc: 4.8.2 ( работает )
  • RedHat 6 с Qt 5.3.2 и gcc: 4.7.2 ( работает )
  • RedHat 6 с Qt 5.6.1 и gcc 4.7.1 (не работает)
  • RedHat 6 с Qt 5.6.1 и gcc 4.9.1 (не удается)
  • CentOS 7 с Qt 5.9.2 и gcc 4.8.5 (не работает)
  • RedHat 7 с Qt 5.3.2 и gcc 4.8.5 ( работает )
  • Fedora 29 с Qt 5.11.3 и gcc 8.2.1 (не работает)

Ссылка с небольшим примером: https://drive.google.com/drive/folders/1TGJIbzTkotnHbymTC3xDa-0PFAfG1w4n?usp=sharing

1 Ответ

0 голосов
/ 06 февраля 2019

Похоже, -icon является синонимом -qwindowicon, этот код из Qt 5.5 :

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

Вот почему он удаляется при использовании Xcb.У меня есть догадка (нет времени проверять), что это более или менее стандартный аргумент командной строки для приложений, использующих Xcb, поэтому он анализируется Qt при использовании Xcb.

Весь этот значокОпция командной строки, кажется, была добавлена ​​в 5.4, копаясь в истории версий. Версия Qt 5.3 этого исходного файла не обрабатывает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...