天天看点

Qt 加载QML 文件 [转]Qt 加载QML 文件[转]

Qt 加载QML 文件[转]

  • 参考:https://blog.csdn.net/luoyayun361/article/details/77113516

目录

Qt 加载QML 文件[转]

QQmlApplicationEngined搭配 Window

QQuickView 搭配 Item

QQuickWidget 加载 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();
}
           
  • 这种方式是加载以 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();
}
           
  • 使用 QQuickView 显示 QML 文件,对窗口的控制权(标题、窗口尺寸)是在 C++代码中,QML 文件是以 Item (及 以Item为根的组件)作为根对象。

QQuickWidget 加载 QML

  • 示例:
QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();
           
  • QQuickWidget是继承于 QWidget 控件,这种方式主要是用于在 QWidget 界面上加载 QML 界面。
  • 【注】QWidget中加载QML页面并设置透明背景
    • 要在QWidget中加载QML页面首先要用到一个很重要的类QQuickWidget
  • 示例:
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();
           
  • 设置透明,最关键的一句
m_pQuickWidget->setClearColor(QColor(Qt::transparent));