Qt 加载QML 文件的几种方式

本小妞迷上赌 提交于 2019-11-30 08:19:08

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luoyayun361/article/details/77113516
前言
之所以写这篇文章,是因为在项目中经常会碰到一个问题,qml 文件该如何加载到工程中,其实 Qt Quick APP 有两种模式,另外,还有一种场景是,在 QWidget 界面上加载 QML 页面,这三种情况的使用方式都不太一样,这里总结一下。

正文
QQmlApplicationEngined搭配 Window
示例:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
这种方式是加载以 Window为跟对象的 QML 文件,QML 拥有窗口的完整控制权,可以直接设置标题、窗口尺寸等属性。

QQuickView 搭配 Item
示例:

#include <QGuiApplication>
#include <QQuickView>
int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQuickView *view = new QQuickView;
    view->setResizeMode(QQuickView::SizeRootObjectToView);
    view->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    view->show();

    return app.exec();
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
使用 QQuickView 显示 QML 文件,对窗口的控制权(标题、窗口尺寸)是在 C++代码中,QML 文件是以 Item (及 以Item为根的组件)作为根对象。

QQuickWidget 加载 QML
示例:

 QQuickWidget *view = new QQuickWidget;
 view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
 view->show();
1
2
3
QQuickWidget是继承于 QWidget 控件,这种方式主要是用于在 QWidget 界面上加载 QML 界面。之前写过一篇文章,主要讲QQuickWidget加载 QML 的设置背景透明的问题,在这里
————————————————
版权声明:本文为CSDN博主「luoyayun361」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/luoyayun361/article/details/77113516

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!