【发布时间】:2020-01-28 14:32:14
【问题描述】:
工作代码
此代码正确显示图像:
Image {
source: Qt.resolvedUrl("file:" + "C:\\Users\\m3\\AppData\\Local\\Temp\\sli\\3d.png")
}
错误代码
此代码不工作,我的意思是图像未显示:
Image {
source: Qt.resolvedUrl("file:" + cpplib.path + "\\" + "3d.png")
}
路径的QML日志
在 QML 上记录 path:
console.log(cpplib.path)
C:\Users\m3\AppData\Local\Temp\sli
C++ 路径日志
在 C++ 上记录 path:
QString path = // ...
qDebug() << path;
"C:\\Users\\m3\\AppData\\Local\\Temp\\sli"
如何以跨平台的方式将图像源路径从 C++ 发送到 QML?
更新
通过以下方式记录图像源:
Image {
// ...
onSourceChanged: {
console.log("image source:", source)
}
}
结果:
qml:图片来源:file:///C:/Users/m3/AppData/Local/Temp/sli/3d.png更新
我连续设置了图片来源:
imageID.source = Qt.resolvedUrl("file:" + cpplib.path + "\\3d.png")
imageID.source = Qt.resolvedUrl("file:" + "C:\\Users\\m3\\AppData\\Local\\Temp\\sli\\3d.png")
令我惊讶的是,onSourceChanged 内的日志显示两者实际上是相同的:
onSourceChanged: {
console.log("image source:", source)
}
qml:图片来源:file:///C:/Users/m3/AppData/Local/Temp/sli/3d.png
qml:图片来源:file:///C:/Users/m3/AppData/Local/Temp/sli/3d.png
【问题讨论】:
-
你试过正斜杠
/吗? -
@Taron 是的,我试过了。
-
也许你在 Image.source 设置后设置了
cpplib.path?尝试打印来自onSourceChanged事件的source值。无论如何,只是一个建议 - 从 C++ 设置图像的正确方法是 QQuickImageProvider