2013-06-14 40 views
7

Tôi muốn hiển thị hình ảnh trong một tiện ích QLabel. Những hình ảnh nằm trong thư mục ./images/ liên quan đến các tập tin resource.qrc và bao gồm như sau:Đường dẫn tài nguyên Qt qrc không hoạt động

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

Bây giờ tôi muốn thể hiện hình ảnh trong một QLabel:

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

này không có tác dụng. Trong khi ở chế độ gỡ lỗi pixmap = NULL. Tôi nghĩ đường dẫn qrc là sai. Với đường dẫn hệ thống tuyệt đối đến hình ảnh c:/images/... nó hoạt động tốt. Bất kỳ ý tưởng?

+1

bạn có khởi tạo tài nguyên của mình không? –

+0

Tôi nghĩ vậy. trong tệp .pro của tôi, nó được đề cập là "RESOURCES = resource.qrc" – Xear

+1

bạn cần một cái gì đó như 'Q_INIT_RESOURCE (tài nguyên);' trong chương trình của bạn –

Trả lời

6

Tiền tố bạn đã chỉ định được áp dụng cho đường dẫn tài nguyên bên trong ứng dụng. Nó không áp dụng cho đường dẫn thực của tệp. Tài nguyên chính xác phải là:

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

Và đường dẫn tài nguyên sẽ là :/images/images/image.png.

Bạn cũng có thể chỉ định prefix="/" trong tệp RCC và sử dụng ://images/image.png đường dẫn tài nguyên. Tôi nghĩ nó thuận tiện hơn.

+0

tôi đã thử cả hai nhưng nó cũng không hoạt động. – Xear

+0

ok, mọi thứ đều ổn. Tôi cần phải thực hiện qMake sau khi thay đổi trong tập tin .pro. mô tả của bạn hoàn toàn chính xác. cảm ơn – Xear

+0

QMake đã không hoàn toàn làm điều đó cho tôi, nhưng một khởi động lại của QtCreator đã làm. –

5

Nếu bạn sử dụng một bí danh trong tập tin hiến tài nguyên của bạn: -

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

Sau đó, bạn có thể truy cập hình ảnh của bạn khi bạn đang làm với: -

": /images/image.png "

Các vấn đề liên quan