2010-02-10 39 views
6

Tôi có ứng dụng Qt có một số tệp JPG được nhúng mà tôi muốn hiển thị. Khi tôi biên dịch và chạy cả hai phiên bản gỡ lỗi và phát hành trên máy của mình, mọi thứ hoạt động hoàn hảo. Khi tôi sao chép ứng dụng vào một ổ USB và chạy nó từ đó trên máy tính của tôi, nó hoạt động tốt. Trên ổ USB và máy của nhà phát triển khác: OK. Trên ổ USB trên máy thứ ba, không phải của nhà phát triển: không có hình ảnh!Tài nguyên JPG nhúng không tải trong ứng dụng Qt

proj.pri 
RESOURCES += ./proj.qrc 

proj.qrc: 
<RCC> 
<qresource prefix="/myApp"> 
    <file>Gui/Resources/logo.jpg</file> 
    <file>Gui/Resources/another_image.jpg</file> 
</qresource> 
</RCC> 

main.cpp: 
{ 
    ... 
    QImage *logo = new QImage(":/myApp/Gui/Resources/logo.jpg"); 
    QImage *image = new QImage(":/myApp/Gui/Resources/another_image.jpg"); 

    myClass *d1 = new myClass("Some Text", 48, 30, logo); 
    myClass *d2 = new myClass("Some More Text", 48, 30, another_image); 
    ... 
} 

Tôi đã xác nhận rằng hình ảnh đang được thêm vào tệp thực thi bằng cách nhận xét ra dòng RESOURCES trong tệp .pri. Kích thước của tệp nhị phân giảm theo kích thước của hình ảnh cộng với một chút; khi tôi chạy ứng dụng, hình ảnh không xuất hiện. Tôi không nhận xét dòng RESOURCES và mọi thứ hoạt động như mô tả ở trên.

Tôi thiếu gì ở đây? Một DLL trên máy không phải của nhà phát triển? Một

Môi trường:

  • Win XP
  • Qt 4.6.1
  • Visual Studio 2008
  • Qt Creator 1.3.1

Trả lời

11

Nó cần cắm jpeg để tải hình ảnh. Nếu bạn đã cài đặt Qt, chúng sẽ nằm trong% QTDIR% \ plugins \ imageformats.

Sao chép qjpeg4.dll vào thư mục plugin trên ổ USB của bạn.

root/app.exe 
root/qt.conf 
root/plugins/imageformats/qjpeg4.dll 

Trong qt.conf tập tin thiết lập đường dẫn đến plugin dir của bạn:

[Paths] 
plugins=./plugins 
+0

Tôi đã trải nghiệm điều này trước đây và đây là giải pháp mà tôi gặp phải. OP, hãy nhớ rằng cấu trúc thư mục có thể quan trọng. –

+2

BTW, sao chép imageformats/qjpeg4.dll vào thư mục gốc (như trong ví dụ trên) và để lại qt.conf và root/plugins. – dwj

+0

Vâng điều này có thể là một chút dư thừa, nhưng tôi không nhớ chính xác thứ tự tra cứu Qt không :). – Eugene

0

Trong khi câu trả lời chính xác nhất được đưa ra already, thay vì phải triển khai nhiều dlls và một cấu trúc thư mục, tôi thấy nó dễ dàng hơn nhiều để chỉ chuyển đổi hình ảnh sang png ... không yêu cầu định dạng hình ảnh vv nếu bạn sử dụng png.

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