简述
Qt 资源系统允许将资源文件作为二进制文件存储在可执行文件中,这在构建混合的 QML/C++ 应用程序时非常有用,因为它通过资源系统的 URI 方案引用 QML 文件(以及其他资源,例如:图片和声音文件),而不是文件系统资源的相对路径或绝对路径。
- 简述
- 使用资源系统
- 实际应用
版权所有:一去丶二三里,转载请注明出处:http://blog.csdn.net/liang19890820
使用资源系统
要在混合的 QML/C++ 应用程序中使用资源系统:
- 创建一个 .qrc 资源集合文件(以 XML 格式列出资源文件)
- 从 C++ 中,加载主 QML 文件(使用 :/prefix 将其作为一个资源,或使用 qrc 方案将其作为一个 URL)
一旦完成该过程,QML 中以相对路径指定的文件都将从资源系统中加载。资源系统的使用对 QML 层完全透明,这意味着所有的 QML 代码应该使用相对路径引用资源文件,而不是使用 qrc 方案。该方案只应在 C++ 代码中使用,来引用资源文件。
注意: 如果使用资源系统,那么只要更改 QML 源文件,就必须重新编译应用程序,以便更新包中的资源。
实际应用
来看一个简单的示例,在 QML 中加载一张炫酷的图片(Logo ~O(∩_∩)O~)。
应用程序的目录结构如下所示:
- project/
- project.pro
- main.cpp
- main.qml
- resource.qrc
- images/
- background.png
main.qml 和 background.png 将被打包为资源文件,这是在 resource.qrc 中完成的:
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource prefix="/">
<file>main.qml</file>
<file>images/background.png</file>
</qresource>
</RCC>
由于 background.png 是一个资源文件,main.qml 可以使用 resource.qrc 中指定的相对路径来引用它:
import QtQuick 2.3
Image { source: "images/background.png" }
为了让 QML 正确地定位资源文件,main.cpp 使用 qrc 方案将主 QML 文件(main.qml) 加载为资源文件:
#include <QGuiApplication>
#include <QQuickView>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
// 创建一个基于 QWindow 的视图,来显示 QML 的内容
QQuickView view;
view.setSource(QUrl("qrc:/main.qml"));
view.show();
return app.exec();
}
最后,project.pro 使用 RESOURCES 变量来指示 resource.qrc 应该被用于构建应用程序资源:
# 告诉 qmake 这是一个应用程序
TEMPLATE = app
# 声明了要从 C++ 使用的 Qt 库
QT += qml quick
CONFIG += c++11
SOURCES += main.cpp
# 告诉 qmake 该资源集合应该被内置到可执行文件中
RESOURCES += resource.qrc
时间: 2024-09-20 05:49:29