Qt和QtQuick中的路径处理
扫描二维码
随时随地手机看文章
在资源文件中的代码可省略qrc:// 支持资源文件目录的相对路径表示法
在可执行文件中的代码可省略file:// 支持文件目录的相对路径表示法
QtQuick中,若qml文件在资源中,访问其他资源文件可以省略’qrc:’
Image { id: img width: 200 height: 200 source:"1.png" //访问qrc中的1.png } 等同于: Image { id: img width: 200 height: 200 source: "qrc:/1.png" //访问qrc中的1.png }
QtQuick中,访问外部文件夹,加上file:// 并且是绝对路径!
//访问内部存储文件夹 org.qtproject.xml为安卓中本程序的包名 source="file:///data/data/org.qtproject.xml/files/test2.jpg"; //访问SD卡 source="file:///mnt/sdcard/test1.jpg";
C++中,访问外部文件夹
// 访问内部存储 org.qtproject.xml为安卓中本程序的包名 "/data/data/org.qtproject.xml/files/test2.jpg" //访问SD卡 source="/mnt/sdcard/test1.jpg";
安卓中当前路径为内部存储文件夹,因此获取文件夹绝对路径只需要知道当前路径
QDir dir; qDebug()<<dir.currentPath(); //输出:"/data/data/org.qtproject.xml/files"
部分类支持安卓语法的目录 已知的有 ini操作 和 webview,:
"file:///android_asset/info.ini" "file:///android_asset/index.html"
使用Qt和QtQuick混合编程,C++提供路径给QtQuick:
Image { id: getbinimg width: 200 height: 200 } ...... ... myapp.savebin(x.responseText,"test2.jpg");//调用C++保存jpg 此处C++在可执行文件中 用相对路径即可 //把保存的文件显示到image中 此处是qml文件 getbinimg.source="file:///"+myapp.dir+"/test2.jpg";
myapp:
#ifndef QMLCLASS_H #define QMLCLASS_H #include#includeclass QmlClass : public QObject { Q_OBJECT Q_PROPERTY(QString dir READ getdir ) public: explicit QmlClass(QObject *parent = 0); QString getdir() { return QDir::currentPath(); } signals: public slots: }; #endif // QMLCLASS_H