以前用qtwediget的时候,好像是放在qlabel或者什么组件上面,把图片的路径放上去就可以直接加载,但我用QML创建界面的时候就遇到了问题,哦对,qtwedget用qpixmap组件显示图片,也有image。话说回来,QML显示图片用的是image来贴图,但有个问题,常规显示本地图片或者网络图片前面加个filie:///或者网络URL就行了,但我考虑到项目的封装性,因为考虑到了有时候项目打包的话需要把资源文件也带进去,就是qt的qrc文件,我image直接引用qrc文件下的图片的url的时候会显示图片打不开,会报错cannot open.....,qtwediget不会遇到这个问题,网上面的一些教程都是直接引用就成功了,我也很无语,后来看到一位up主叫执笔划线的解决了,忠心感谢,下面我来讲讲解决办法
首先我说说问题就是出在了CMake的配置上,我们创建了一个qrc文件以后,在cmake中qtcreater是自动在qt_add_qml_module加上了一句resource什么的,初看没啥问题,就是把qrc文件加入到文件系统,但是,这样做访问不了图片,为啥,我没专门学过cmake,我不知道,有知道的可以说一下。我们要把这一句删掉,在文件系统上面加上
qt_add_resources(RES source.qrc)
RES是我取的别名,这个你们想叫啥叫啥,source.qrc是我创建的资源文件
加好了以后在文件系统中加入sources ${RES}
qt_add_qml_module(appqmltestURI qmltestVERSION 1.0SOURCES ${RES}QML_FILESMain.qml)
改这两处就可以正常访问图片了