Qt 加载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));