qml几种加载方式的区别

前言   1、QQmlApplicationEngine+window 此方式加载QML :QML […]

前言

 

1、QQmlApplicationEngine+window

此方式加载QML QML 拥有窗口的完整控制权,可以直接设置标题、窗口尺寸等属性

#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();
}

 

2、QQuickView+Item

此方式加载QML :对窗口的控制权(标题、窗口尺寸)是在 C++代码中,QML 文件是以 Item (及 以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();
}

 

3、QQuickWidget

此方式加载QML :QQuickWidget是继承于 QWidget 控件,这种方式主要是用于在 QWidget 界面上加载 QML 界面

QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();

 

QWidget中加载QML页面并设置透明背景

 

    m_pQuickWidget = new QQuickWidget(this);
    m_pQuickWidget->setFixedSize(1131,586);
    m_pQuickWidget->setAttribute(Qt::WA_AlwaysStackOnTop);
    m_pQuickWidget->setClearColor(QColor(Qt::transparent)); // 重要
    m_pQuickWidget->setSource(QUrl(QStringLiteral("qrc:/UI/Viewer.qml")));
    m_pQuickWidget->rootObject()->setWidth(1131);
    m_pQuickWidget->rootObject()->setHeight(586);
    m_pQuickWidget->move(this->width()/2.0 - m_pQuickWidget->width()/2.0,342);
    m_pQuickWidget->show();

 

参考

https://blog.csdn.net/luoyayun361/article/details/77113516/

https://blog.csdn.net/qq_37996632/article/details/113284468

https://blog.csdn.net/qq_34139994/article/details/105195447

 

版权声明
文章标题:qml几种加载方式的区别
文章链接:https://blog.chiyuba.com/houduanjishu/qt/501.html
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,转载或引用请注明出处。
温馨提示:本文最后更新于 2023年6月27日,部分内容可能存在时效性,请注意甄别。

相关推荐

更多教程
Qt 窗体最小化、最大化设置 Qt Qt 窗体最小化、最大化设置

前言 需求: 我想在软件一打开就以最大化...

3 浏览
Qt QListWidget setCurrentRow无效解决方法 Qt Qt QListWidget setCurrentRow无效解决方法

​  前言 最近在项目中用到QListW...

1 浏览
Qt的pro项目管理配置之编译前置执行代码 Qt Qt的pro项目管理配置之编译前置执行代码

实现方式 srcFile1 = $$PW...

4 浏览

评论