当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C++开发使用QQuickView、QQmlApplicationEngine、QQuickWidget的关系

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

2020年08月11日  | 移动技术网IT编程  | 我要评论
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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网