c/c++语言开发共享C++开发使用QQuickView、QQmlApplicationEngine、QQuickWidget的关系

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();

c/c++开发分享C++开发使用QQuickView、QQmlApplicationEngine、QQuickWidget的关系地址:https://blog.csdn.net/hankern/article/details/107889266

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/597987.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐