盛世清平~QtQuick~qml中Image的source属性路径

在用qml中的Image控件加载图片时,在工程目录中有一个"./image/1.png"的图片始终加载不出来

后来发现问题如下:

首先,新建Qt Quick Application的hello world的例子,然后添加如下代码:

[plain]  view plain  copy
  1. import QtQuick 2.5  
  2. import QtQuick.Window 2.2  
  3.   
  4. Window {  
  5.     visible: true  
  6.     width: 640  
  7.     height: 480  
  8.     title: qsTr("Hello World")  
  9.   
  10.     MouseArea {  
  11.         anchors.fill: parent  
  12.         onClicked: {  
  13.             Qt.quit();  
  14.         }  
  15.     }  
  16.   
  17.     Text {  
  18.         text: qsTr("Hello World")  
  19.         anchors.centerIn: parent  
  20.     }  
  21. // my code   
  22.     Image{  
  23.         source: "./image/1.png"  
  24.     }  
  25. }  

运行时报错:

qrc:/main.qml:22:5: QML Image: Cannot open: qrc:/image/1.png


报错信息居然是qrc:/image/1.png,但是我不是写的qrc路径啊!

也许可以按照错误提示,将1.png加入qml路径中去。

但是因为我是在程序中截图然后再加载到image控件中时遇到这个路径的,所以不可能加入到qrc中去


只能从报错路径qrc/image/1.png另想办法。


因为代码中写的是相对路径,所以图片路径可能和qml文件的本身路径邮箱

后来发现在main.cpp中加载qml的路径是这样的:

QQmlApplicationEngine engine;

engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
然后改为不从qrc路径加载后程序能正常加载图片了:
    QQmlApplicationEngine engine;
//    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    engine.load("main.qml"); 


问题已经解决一半,发布程序的时候肯定不能将qml暴露出来啊!

所以还是只能按照原来的方式加载qml。


后来查看qt文档 Image 中的 source属性为url,我写的相对路径的字符串被转化成了qrc:/image/1.png这样的url变量

还有没有其他形式的url变量呢?

想了很久,突然灵光乍现想到之前用FileDialog的时候,返回选中文件的路径是"file:///xxxx.png"

于是在现在的代码中将source的路径改为

Image{

        source: "file:///E:/seven_code/code/ImageSource/image/1.png"
    }

我在自己的程序中用的加载图片成功的代码:
Image{
    source:"file:///C:/Users/video/Pictures/Camera Roll/1.jpg"
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值