1. 程式人生 > >Qt 載入QML 檔案的幾種方式

Qt 載入QML 檔案的幾種方式

前言

之所以寫這篇文章,是因為在專案中經常會碰到一個問題,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(); }

這種方式是載入以 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 介面。之前寫過一篇文章,主要講QQuickWidget載入 QML 的設定背景透明的問題,在這裡