Настройка значка приложения Qt Gui

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

 1. create an ICO file bitmap That contains the icon image.
 2. Store the ICO file in app's source code directory.
 3. create a text file and added these lines "IDI_ICON1 ICON DISCARDABLE
 4. myicon.ico" and saved it as "myicon.rc".
 5. and added these lines in my .pro file "RC_FILE = MYICON.RC"

но он дает эту ошибку:

mingw32-make[1]: * Нет правила для создания цели '../Test/myicon.rc', необходимой для 'debug/myicon_res.o'. Останавливаться. mingw32-make: * [отладка] Ошибка 2 02:15:41: Процесс «C:\TDM-GCC-32\bin\mingw32-make.exe» завершился с кодом 2. Ошибка при сборке/развертывании Тест проекта (комплект: Рабочий стол) При выполнении шага «Сделать»


person Ashish Chauhan    schedule 29.07.2015    source источник
comment
Это предназначено для визуальной студии.   -  person Mark Jansen    schedule 30.07.2015
comment
нет, я использую Qt Creator   -  person Ashish Chauhan    schedule 30.07.2015
comment
Да, но создатель Qt сам по себе не является компилятором, ему нужен компилятор для выполнения своей работы.   -  person Mark Jansen    schedule 30.07.2015
comment
Да, я знаю этого, приятель, я использую MinGW (x86 32bit), так как я использую 32-битную систему.   -  person Ashish Chauhan    schedule 30.07.2015


Ответы (2)


Ваша проблема, вероятно, в том, что вы включаете myicon.rc как обычный файл, и он указан как исходный файл. Он не должен быть указан ни там, ни в заголовках, потому что он не проходит через обычный компилятор. Вам нужно указать его как RC_FILE = myapp.rc.

http://doc.qt.io/qt-5/qmake-variable-reference.html#rc-file

Обратите внимание, что ICON в .pro используется только на Mac.

http://doc.qt.io/qt-5/qmake-variable-reference.html#icon

Я включил пример кода того, как я обычно обрабатываю свой файл rc, файл версии и как он используется в файлах main.cpp и .pro.

Это должно работать в Qt Creator и Visual Studio.

Вот файлы, которые я использую, когда делаю версии и значки в Windows:

myapp.rc

// http://stackoverflow.com/questions/2784697/setting-application-info-in-qt
#include <windows.h>
#include "version.h"

// if you needed to maintain two different icons for your app, you could
// switch here using a #ifdef and #else
#define MYICON "my_icon.ico"

IDI_ICON1               ICON    DISCARDABLE     MYICON

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",        VER_COMPANYNAME_STR
            VALUE "FileDescription",    VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",        VER_FILEVERSION_STR
            VALUE "InternalName",       VER_INTERNALNAME_STR
            VALUE "LegalCopyright",     VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1",   VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2",   VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename",   VER_ORIGINALFILENAME_STR
            VALUE "ProductName",        VER_PRODUCTNAME_STR
            VALUE "ProductVersion",     VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1252
    END
END

версия.h

#ifndef VERSION_H
#define VERSION_H

#define VER_FILEVERSION             0,1,0,0
#define VER_FILEVERSION_STR         "0.1.0.0\0"

#define VER_PRODUCTVERSION          15,07,01,50
#define VER_PRODUCTVERSION_STR      "15.07.01.50"

#define VER_COMPANYNAME_STR         "MySoft"
#define VER_FILEDESCRIPTION_STR     "Star Runner"

#define VER_INTERNALNAME_STR        "Star Runner"
#define VER_LEGALCOPYRIGHT_STR      "Copyright © MySoft"
#define VER_LEGALTRADEMARKS1_STR    "All Rights Reserved"
#define VER_LEGALTRADEMARKS2_STR    VER_LEGALTRADEMARKS1_STR
#define VER_ORIGINALFILENAME_STR    "star_runner.exe"
#define VER_PRODUCTNAME_STR         "Star Runner"

#define VER_COMPANYDOMAIN_STR       "mysoft.com"

#endif // VERSION_H

main.cpp

#include <QApplication>
#include "version.h"
#include <QSettings>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setApplicationName(VER_PRODUCTNAME_STR);
    a.setOrganizationName(VER_COMPANYNAME_STR);
    a.setOrganizationDomain(VER_COMPANYDOMAIN_STR);
    a.setApplicationDisplayName(VER_PRODUCTNAME_STR);
    QSettings::setDefaultFormat(QSettings::IniFormat);

    // Create the widget or main window here

    return a.exec();
}

star_runner.pro

# all sorts of other things like SOURCES and HEADERS and FORMS, etc.
# ...

win32 {
    # DEFINES -= UNICODE
    RC_FILE += myapp.rc
}

macx {
    ICON = my_icon.icns
}

OTHER_FILES += \
    my_icon.ico \
    my_icon.icns \
    myapp.rc

И, наконец, при создании иконок я обычно использую Gimp, делая их размером не менее 256x256, а затем экспортируя их в разных размерах с помощью Phoca. Сохранить значки. В других случаях я просто создаю png, а затем использую что-нибудь из здесь .

Надеюсь, это поможет.

person phyatt    schedule 29.07.2015
comment
Спасибо за предложение. Но получаю ту же ошибку и mingw32-make[1]: *** Нет правила для создания цели '../Test/myicon.rc', необходимой для 'release/myicon_res.o'. Останавливаться. Что это значит?? - person Ashish Chauhan; 30.07.2015
comment
Я предполагаю, что при развертывании/сборке проекта возникла проблема с набором qt creater. какие-либо предложения??? - person Ashish Chauhan; 30.07.2015
comment
Попробуйте выполнить чистую сборку и удалить файлы Make.release и Make.deploy. Обычно это устраняет некоторые давние проблемы после изменения файла .pro. - person phyatt; 30.07.2015
comment
теперь еще одна ошибка, выпуск не происходит, выдавая ошибку. Программа неожиданно завершилась, если я не задействовал значок и все такое, программа успешно строится, и я все еще получаю эту ошибку значка, уже много чего перепробовал. :( - person Ashish Chauhan; 30.07.2015
comment
Я делал это много раз. Попробуйте очистить сборку и удалить файлы Make.release и Make.deploy. Обычно это устраняет некоторые давние проблемы после изменения файла .pro. - person Ashish Chauhan; 30.07.2015

Mingw не знает, как обращаться с файлом .rc.

См.: http://www.mingw.org/wiki/MS_resource_compiler.

person Mark Jansen    schedule 30.07.2015
comment
Так что я должен изменить свой компилятор, это то, что вы имеете в виду. ?? Можешь чуть-чуть уточнить, может поможет. - person Ashish Chauhan; 30.07.2015
comment
Либо вы меняете свой компилятор, либо используете такой инструмент, как Windres, как на странице, на которую я ссылаюсь. - person Mark Jansen; 30.07.2015