QML 使用资源系统

简述

Qt 资源系统允许将资源文件作为二进制文件存储在可执行文件中,这在构建混合的 QML/C++ 应用程序时非常有用,因为它通过资源系统的 URI 方案引用 QML 文件(以及其他资源,例如:图片和声音文件),而不是文件系统资源的相对路径或绝对路径。

| 版权声明:一去、二三里,未经博主允许不得转载。

使用资源系统

要在混合的 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
展开阅读全文
©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值