2014-09-30 14 views
11

Điều này có vẻ thực sự cơ bản nhưng vì một lý do nào đó tôi không thể lấy nguồn hình ảnh để hoạt động trong ứng dụng QML cực kỳ đơn giản bên dưới.Không thể tải Nguồn hình ảnh trong Ảnh QML

FYI, tôi đang chạy Mac OS-X 10.9.5, Qt Creator 3.2.1 dựa trên Qt 5.3.2.

import QtQuick 2.3 
import QtQuick.Controls 1.2 

ApplicationWindow { 
    visible: true 
    width: 640 
    height: 480 
    title: qsTr("Test") 

    Image { 
     id: image1 
     x: 10 
     y: 10 
     width: 100 
     height: 100 
     source: "testImage.png" 
    } 
} 

tôi nhận được lỗi sau:

qrc:/main.qml:10:5: QML Image: Cannot open: qrc:/testImage.png 

Các cửa sổ ứng dụng được tạo ra nhưng không có hình ảnh được hiển thị. Tôi cũng đã cố gắng gói hình ảnh trong một hình chữ nhật nhưng điều này không giúp đỡ.

Tôi đang làm gì sai ở đây?

"testImage.png" nằm trong thư mục dự án và tôi đã thử tất cả các cách để chỉ định đường dẫn hình ảnh bằng tài nguyên, tuyệt đối, tương đối và thậm chí chỉ định nguồn hình ảnh theo cách thủ công với nhà thiết kế giao diện người dùng QML.

Tôi cũng sẽ đề cập rằng để có được Qt 5.3.2 để hoạt động, tôi đã thực hiện theo sửa đổi được đề xuất HERE.

Cảm ơn.

+0

https://doc.qt.io/qt-5/qml-qtquick-image.html#source-prop 'URL có thể tuyệt đối hoặc liên quan đến URL của thành phần.' URL qrc là tương đối. Bạn cũng có thể sử dụng tệp: ///home/user/testImage.png hoặc bạn có thể xác định [QQuickImageProvider] của riêng mình (https://doc.qt.io/qt-5/qquickimageprovider.html) có thể xử lý của riêng bạn lược đồ, ví dụ 'Image {source:" image: //myimageprovider/testImage.png "}' – bitek

Trả lời

24

Tôi cho rằng tệp qml của bạn có trong tài nguyên, vì vậy, hãy thử đặt hình ảnh testImage.png của bạn trong tài nguyên. Biên dịch lại ứng dụng, chạy nó và kiểm tra là hình ảnh hoạt động đúng.

Tất cả phải ở bên nhau. Ví dụ:

enter image description here

Mã của tôi:

Image 
{ 
    source: "images/earth.png" 

Nếu tôi xóa hình ảnh này từ nguồn lực, tôi sẽ nhận được lỗi này quá, nhưng hình ảnh vẫn ở đúng vị trí trong hệ thống tập tin.

Khi nguồn qml được đặt trong tài nguyên, thì tất cả các tệp tải từ qml cũng phải ở trong tài nguyên (Qt tìm kiếm tệp này trong tài nguyên chứ không phải trong hệ thống tệp).

+1

Tuyệt vời, đã hoạt động! Có vẻ như tôi đã làm điều này một triệu lần trước nhưng không nhớ là cần phải thêm vào tài nguyên. Cảm ơn! –

+2

@BruceDean Bạn được chào đón :) – Chernobyl

+2

Nó cũng hoạt động nếu bạn đặt hình ảnh trong tệp tài nguyên qrc và truy cập nó như sau: Hình ảnh { nguồn: "qrc: /images/earth.png" } – SGrebenkin

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