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();
}
Важные замечания
- Формат
.icoподходит для Windows, но в Linux и macOS лучше использовать.png— они лучше поддерживаются системой и не требуют специальных плагинов. setWindowIcon()можно вызывать как уQApplication, так и у отдельного окна (QWidget::setWindowIcon()). Первый вариант задаёт иконку по умолчанию для всех окон приложения.- Для Windows иконка встроена в
.exeи отображается в проводнике, на панели задач и в свойствах файла. Для Linux иконка окна задаётся только во время выполнения. - Пути к ресурсам начинаются с
:/— не забывайте двоеточие, иначе Qt будет искать файл на диске. qmakeобязателен после изменения.pro. В средах на CMake используетсяset(APP_ICON_RESOURCE_WINDOWS ...)или аналог черезAUTORCCиAUTOUIC..qrcподключается автоматически при использовании qmake, если файл указан вRESOURCES. В современных версиях Qt Creator ресурсные файлы можно добавлять прямо через мастер.- Мультиплатформенный подход. Для кроссплатформенных приложений часто комбинируют оба метода:
.rc— только дляwin32;.qrc+setWindowIcon()— для всех остальных систем.
Итог
Добавление иконки в Qt-приложение зависит от целевой платформы. В Windows используется ресурсный .rc-файл, подключаемый через .pro, после чего требуется запустить qmake. В Linux иконка добавляется в .qrc-ресурсы и устанавливается вызовом setWindowIcon(QIcon(":/ico/1.ico")) в main(). Комбинация обоих подходов позволяет получить корректную иконку на всех платформах.