欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++开发使用QQuickView、QQmlApplicationEngine、QQuickWidget的关系

程序员文章站 2022-03-04 15:18:09
QQuickWidget直接就是个QWidget子类,你可以直接添加到用QtWidgets写的界面里去。QQuickView得转换下才能添加到QtWidgets写的界面里。这是两者最主要的区别。底层的实现有差别,QQuickWidget和其他widgets结合更好。界面如果是纯qml的,就用qquickview或者qqmlapplicationengineQQuickView是一个便利类,可以方便的从一个qml文件创建视图。QQmlApplicationEngine只能用于qml相关的应用,...

QQuickWidget直接就是个QWidget子类,你可以直接添加到用QtWidgets写的界面里去。

QQuickView得转换下才能添加到QtWidgets写的界面里。这是两者最主要的区别。底层的实现有差别,QQuickWidget和其他widgets结合更好。

界面如果是纯qml的,就用qquickview或者qqmlapplicationengine

QQuickView是一个便利类,可以方便的从一个qml文件创建视图。

QQmlApplicationEngine只能用于qml相关的应用,本身不会创建任何可视化元素,需要手工往qml文件添加。如果你使用Qt Quick里面的视觉item,你需要把qml里面加一个Window,然后将其放进去。


1、QQmlApplicationEngine的使用

 int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QQmlApplicationEngine engine;
        engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
        return app.exec();
    }
 ApplicationWindow {
        title: qsTr("Hello World")
        width: 640
        height: 480
        visible: true
        menuBar: MenuBar {
            Menu {
                title: qsTr("&File")
                MenuItem {
                    text: qsTr("&Open")
                    onTriggered: messageDialog.show(qsTr("Open action triggered"));
                }
                MenuItem {
                    text: qsTr("E&xit")
                    onTriggered: Qt.quit();
                }
            }
        }
        MainForm {
            anchors.fill: parent
            button1.onClicked: messageDialog.show(qsTr("Button 1 pressed"))
            button2.onClicked: messageDialog.show(qsTr("Button 2 pressed"))
            button3.onClicked: messageDialog.show(qsTr("Button 3 pressed"))
        }
        MessageDialog {
            id: messageDialog
            title: qsTr("May I have your attention, please?")
            function show(caption) {
                messageDialog.text = caption;
                messageDialog.open();
            }
        }
    }

2、QQuickView的使用

 #include <QApplication>
    #include <QQuickView>
    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    int main(int argc, char *argv[])
    {
        QGuiApplication app(argc, argv);
        QQuickView viewer;
        viewer.setResizeMode(QQuickView::SizeRootObjectToView);
        viewer.setSource(QUrl("qrc:///main.qml"));
        viewer.show();
        return app.exec();
    }
 import QtQuick 2.4
    import QtQuick.Controls 1.3
    import QtQuick.Window 2.2
    import QtQuick.Dialogs 1.2
    Rectangle{
        width: 320;
        height: 240;
    }

3、QQuickWidget的使用(在qml中和QQuickView差不多,在qtwidget中就不一样了)

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

本文地址:https://blog.csdn.net/hankern/article/details/107889266

相关标签: C++学习