Готовые методы реализаций

Добавление иконки для приложения Qt

обновлено 3 106 просмотров

Windows

Шаг 1. Создание RC-файла

Создаём файл с расширением .rc (например, file.rc) и добавляем в него следующую строку:

IDI_ICON1               ICON                    "1.ico"

Здесь "1.ico" — путь к файлу иконки. IDI_ICON1 — произвольный идентификатор ресурса, который будет использоваться системой.

Шаг 2. Подключение RC-файла в .pro

Добавляем в .pro-файл проекта следующий блок:

win32 {
    RC_FILE += file.rc
    OTHER_FILES += file.rc
}
  • RC_FILE — указывает qmake, какой ресурсный файл подключить к сборке.
  • OTHER_FILES — добавляет файл в список прочих файлов проекта (удобно для отображения в IDE).

Шаг 3. Применение изменений

Для появления иконки необходимо запустить qmake — он перегенерирует Makefile с учётом нового ресурсного файла. После этого выполняется обычная сборка проекта.

Linux

Шаг 1. Добавление иконки в ресурсы

Файл иконки добавляется в ресурсный файл *.qrc. Это позволяет «встроить» изображение прямо в исполняемый файл, чтобы оно было доступно независимо от наличия внешних файлов.

Пример содержимого .qrc:

<RCC>
    <qresource prefix="/ico">
        <file>1.ico</file>
    </qresource>
</RCC>

Шаг 2. Установка иконки окна

В функции main() добавляем новый параметр:

setWindowIcon(QIcon(":/ico/1.ico"));

Путь :/ico/1.ico — это путь внутри ресурсной системы Qt: префикс /ico соответствует тому, что был указан в .qrc, а 1.ico — имя файла.

Пример целиком:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    app.setWindowIcon(QIcon(":/ico/1.ico"));

    MainWindow w;
    w.show();

    return app.exec();
}

Важные замечания

  1. Формат .ico подходит для Windows, но в Linux и macOS лучше использовать .png — они лучше поддерживаются системой и не требуют специальных плагинов.
  2. setWindowIcon() можно вызывать как у QApplication, так и у отдельного окна (QWidget::setWindowIcon()). Первый вариант задаёт иконку по умолчанию для всех окон приложения.
  3. Для Windows иконка встроена в .exe и отображается в проводнике, на панели задач и в свойствах файла. Для Linux иконка окна задаётся только во время выполнения.
  4. Пути к ресурсам начинаются с :/ — не забывайте двоеточие, иначе Qt будет искать файл на диске.
  5. qmake обязателен после изменения .pro. В средах на CMake используется set(APP_ICON_RESOURCE_WINDOWS ...) или аналог через AUTORCC и AUTOUIC.
  6. .qrc подключается автоматически при использовании qmake, если файл указан в RESOURCES. В современных версиях Qt Creator ресурсные файлы можно добавлять прямо через мастер.
  7. Мультиплатформенный подход. Для кроссплатформенных приложений часто комбинируют оба метода:
    • .rc — только для win32;
    • .qrc + setWindowIcon() — для всех остальных систем.

Итог

Добавление иконки в Qt-приложение зависит от целевой платформы. В Windows используется ресурсный .rc-файл, подключаемый через .pro, после чего требуется запустить qmake. В Linux иконка добавляется в .qrc-ресурсы и устанавливается вызовом setWindowIcon(QIcon(":/ico/1.ico")) в main(). Комбинация обоих подходов позволяет получить корректную иконку на всех платформах.