2015-07-29 5 views
-1

Я хочу установить значок для моего кварт приложения с графическим интерфейсом, и выполните действия, перечисленные ниже: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]: * No rule to make target '../Test/myicon.rc', needed by 'debug/myicon_res.o'. Stop. mingw32-make: * [debug] Error 2 02:15:41: The process "C:\TDM-GCC-32\bin\mingw32-make.exe" exited with code 2. Error while building/deploying project Test (kit: Desktop) When executing step 'Make'

+0

Это предназначено для визуальной студии. –

+0

нет, я использую Qt creater –

+0

Да, но создатель Qt не является компилятором сам по себе, ему нужен компилятор для выполнения своей работы. –

ответ

3

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

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

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

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

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

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

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

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 

version.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 Save Icons. В других случаях я просто создаю png, а затем использую что-то от here.

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

+0

Спасибо за предложение. Но получая ту же ошибку, и «mingw32-make [1]: *** Нет правила, чтобы сделать цель« ../Test/myicon.rc », которая нужна« release/myicon_res.o ». Остановитесь». Что это значит?? –

+0

Я предполагаю, что есть некоторая проблема в наборе qt creater при развертывании/создании проекта. какие-либо предложения??? –

+0

Попробуйте создать сборку и удалите файлы Make.release и Make.deploy. Это обычно фиксирует некоторые затяжные проблемы после изменения файла .pro. – phyatt

0

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

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

+0

Поэтому мне нужно изменить свой компилятор, это то, что вы имеете в виду. Можете ли вы просто немного разобраться, что может помочь. –

+0

Либо вы меняете свой компилятор, либо используете такой инструмент, как windres, как на связанной странице. –

 Смежные вопросы

  • Нет связанных вопросов^_^