Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C++ Qt Creator - Nie tworzy pliku zasobów qrc_zasoby.cpp

xidro 29 Paź 2012 19:17 1914 5
  • #1 29 Paź 2012 19:17
    xidro
    Poziom 10  

    Witam.
    Na systemie windows7 64bit zainstalowałem:
    qt-win-opensource-4.8.3-mingw
    oraz
    qt-creator-win-opensource-2.4.0

    Po odpaleniu kreatora w Narzędzia->Opcje->Budowanie i uruchamianie->WersjeQt wskazałem plik qmake.exe

    Wszystko śmiga jak trzeba, znaczy projekty działają, tylko problem pojawia się gdy chce dodać do nich zasoby. Robię wszystko jak trzeba:
    -w folderze z plikiem exe aplikacji umieszczam folder z ikonami (pliki png)
    -dodaje do projektu plik zasoby.qrc
    -umieszczam w nim ikonki
    -na początku funkcji main dodaję makro: Q_INIT_RESOURCE(zasoby);
    -uruchamiam projekt i....

    Otrzymuję komunikat o błędzie:
    :-1: błąd:[release/qrc_zasoby.cpp] Error 2
    Brak pliku

    Czy ten plik powinien sam dołączyć się do aplikacji, czy mam to zrobić ręcznie przez Dodaj istniejący plik? Tyle tylko, że ten plik w ogóle się nigdzie nie pojawia.
    Czy coś źle skonfigurowałem? Proszę o pomoc.

    0 5
  • #2 29 Paź 2012 19:58
    j2me
    Poziom 9  

    Nie zaczynaj manualnych kombinacji kiedy wszystko można zrobić z poziomu Qt creatora!
    Plik zasobów ma być w katalogu ze źródłami.
    przykładowy plik projektu

    Code:
    #-------------------------------------------------
    
    #
    # Project created by QtCreator 2012-10-29T19:34:13
    #
    #-------------------------------------------------

    QT       += core gui

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = untitled1
    TEMPLATE = app


    SOURCES += main.cpp\
            mainwindow.cpp

    HEADERS  += mainwindow.h

    FORMS    += mainwindow.ui

    RESOURCES += \
        res.qrc

    Code:
    <RCC>
    
        <qresource prefix="/pic">
            <file>iconAudio.png</file>
        </qresource>
    </RCC>

    i wówczas możesz zrobić np coś takiego:
    Code:
    w.setWindowIcon(QIcon(":/pic/iconAudio.png"));

    Ogólnie mówiąc masz jakiś istniejący projekt a w nim pliki źródłowe cpp nagłówkowe h formy ui.
    Klikasz w creator'ze nowy plik lub projekt wybierasz Qt i plik zasobów. Dodajesz plik zasobów do projektu, następnie dodajesz interesujące Ciebie pliki do zasobów (które powinny być w katalogu ze źródłami) zapisujesz wszystko i jednym kliknięciem w creatorze budujesz całość. Nie udziwniaj kiedy nie ma potrzeby.

    0
  • #3 29 Paź 2012 22:24
    xidro
    Poziom 10  

    Dzięki za odpowiedź, cały problem polega na tym, ze robię dokładnie tak jak napisałeś i dalej nic:

    Plik projektu:

    Kod: cpp-qt
    Zaloguj się, aby zobaczyć kod


    Plik zasobów:
    Kod: cpp-qt
    Zaloguj się, aby zobaczyć kod


    No i próba użycia:
    setWindowIcon(QIcon(":/ikony/qt.png"));
    Niestety wynik jak zawsze:
    :-1: błąd:[release/qrc_zasoby.cpp] Error 2

    Folder z ikoną umieściłem w folderze z plikiem projektu i pliczkami MainWindow.cpp i MainWindow.h

    Coś robię nie tak, tylko co?

    0
  • #4 30 Paź 2012 14:58
    j2me
    Poziom 9  

    Pokaż wszystko co wypisuje kompilator po angielsku nazywa się to Compile output a po polsku to chyba komunikaty kompilatora lub coś podobnego. W każdym razie chodzi o coś na wzór:

    Code:
    14:51:45: Running steps for project untitled1...
    
    14:51:45: Configuration unchanged, skipping qmake step.
    14:51:45: Starting: "C:\Programy\SDKQt\MinGW\bin\mingw32-make.exe"
    C:/Programy/SDKQt/MinGW/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory `E:/code/Qt/untitled1-build-desktop-Qt_4_8_1__4_8_1__Debug'
    g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I'c:/Programy/SDKQt/Qt/4.8.1/include/QtCore' -I'c:/Programy/SDKQt/Qt/4.8.1/include/QtGui' -I'c:/Programy/SDKQt/Qt/4.8.1/include' -I'c:/Programy/SDKQt/Qt/4.8.1/include/ActiveQt' -I'debug' -I'.' -I'../untitled1' -I'.' -I'c:/Programy/SDKQt/Qt/4.8.1/mkspecs/win32-g++' -o debug/main.o ../untitled1/main.cpp
    g++ -mthreads -Wl,-subsystem,windows -o debug/untitled1.exe debug/main.o debug/mainwindow.o debug/moc_mainwindow.o debug/qrc_res.o  -L'c:/Programy/SDKQt/Qt/4.8.1/lib' -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
    mingw32-make[1]: Leaving directory `E:/code/Qt/untitled1-build-desktop-Qt_4_8_1__4_8_1__Debug'
    14:51:47: The process "C:\Programy\SDKQt\MinGW\bin\mingw32-make.exe" exited normally.

    0
  • #5 03 Lis 2012 17:38
    xidro
    Poziom 10  

    Code:

    17:36:17: Uruchamianie kroków budowania dla projektu calkiem...
    17:36:17: Konfiguracja niezmieniona, krok qmake opuszczony.
    17:36:17: Uruchamianie "C:\Qt\qtcreator-2.4.0\mingw\bin\mingw32-make.exe"
    C:/Qt/qtcreator-2.4.0/mingw/bin/mingw32-make.exe -f Makefile.Release
    mingw32-make.exe[1]: Entering directory `C:/Qt/qtcreator-2.4.0/calkiem-build-desktop-Qt_4_8_3__4_8_3__Release'
    g++ -c -O2 -Wall -Wextra -fno-exceptions -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -DQT_NO_DYNAMIC_CAST -I"..\..\4.8.3\include\QtCore" -I"..\..\4.8.3\include\QtGui" -I"..\..\4.8.3\include" -I"..\..\4.8.3\include\ActiveQt" -I"release" -I"..\calkiem" -I"." -I"..\..\4.8.3\mkspecs\win32-g++" -o release\mainwindow.o ..\calkiem\mainwindow.cpp
    bin\rcc.exe -name zasoby ..\calkiem\zasoby.qrc -o release\qrc_zasoby.cpp
    mingw32-make.exe[1]: Leaving directory `C:/Qt/qtcreator-2.4.0/calkiem-build-desktop-Qt_4_8_3__4_8_3__Release'
    process_begin: CreateProcess(NULL, bin\rcc.exe -name zasoby ..\calkiem\zasoby.qrc -o release\qrc_zasoby.cpp, ...) failed.
    make (e=2): The system cannot find the file specified.
    mingw32-make.exe[1]: *** [release/qrc_zasoby.cpp] Error 2
    mingw32-make.exe: *** [release] Error 2
    17:36:20: Proces "C:\Qt\qtcreator-2.4.0\mingw\bin\mingw32-make.exe" zakończył się kodem wyjściowym 2.
    Błąd podczas budowania projektu calkiem (produkt docelowy: Desktop)
    Podczas wykonywania kroku budowania "Make"

    0
  • #6 04 Lis 2012 01:08
    3electrons
    Poziom 7  

    W tej wersji Qt Digia coś pochrzaniła z ścieżkami oraz z kilkoma innymi rzeczami.

    Zauważ, że rcc.exe jest wywołany jako bin\rcc.exe.

    Dodaj do PATH - w projekcie lub w systemie ścieżkę do katalogu nadrzędnego względem lokalizacji rcc.exe.

    Czyli jeżeli Twoje rcc.exe jest w C:\Qt\4.8.3\bin\rcc.exe
    to dodaj ścieżkę do C:\Qt\4.8.3

    Jednak prościej będzie zrobić downgrade do Qt 4.8.2 - bo możesz też mieć inne problemy tak jak wspomniałem.

    0