2013-06-14 16 views
7

Chciałbym pokazać obraz w widżecie QLabel. Obraz znajduje się w folderze ./images/ stosunku do pliku resource.qrc i zawarte podobnie jak to:Ścieżka zasobu qt nie działa

<RCC> 
    <qresource prefix="/images"> 
     <file>image.png</file> 
    </qresource> 
</RCC> 

Teraz chcę pokazać obraz w QLabel:

QPixmap pixmap(":/images/image.png"); 
label->setPixmap(pixmap); 

To nie działają. W trybie debugowania pixmap = NULL. Myślę, że ścieżka qrc jest błędna. Z absolutną ścieżką systemową do obrazu działa dobrze. Dowolny pomysł?

+1

czy zainicjalizowałeś swój zasób? –

+0

Myślę, że tak. w moim pliku .pro jest wymieniony jako "RESOURCES = resource.qrc" – Xear

+1

potrzebujesz czegoś takiego jak "Q_INIT_RESOURCE (zasoby);" w twoim programie –

Odpowiedz

6

Podany przedrostek jest stosowany do ścieżki zasobów wewnątrz aplikacji. Nie dotyczy rzeczywistej ścieżki pliku. Prawidłowy zasób powinien być:

<RCC> 
    <qresource prefix="/images"> 
     <file>images/image.png</file> 
    </qresource> 
</RCC> 

a ścieżka zasobu będzie :/images/images/image.png.

Można również podać prefix="/" w pliku RCC i użyć ścieżki zasobu ://images/image.png. Myślę, że to wygodniejsze.

+0

próbowałem obu, ale to też nie zadziała. – Xear

+0

ok, wszystko jest w porządku. Muszę wykonać qMake po zmianach w pliku .pro. Twój opis był absolutnie poprawny. dzięki – Xear

+0

QMake nie zrobił tego dla mnie, ale zrobił to restart QtCreatora. –

5

Jeśli używasz aliasu w pliku zasobów dawania: -

<RCC> 
<qresource prefix="/images"> 
    <file alias="image">images/image.png</file> 
</qresource> 
</RCC> 

Następnie można uzyskać dostęp do obrazu, jak robisz z: -

„: /images/image.png "

Powiązane problemy