qml几种加载方式的区别
前言
1、QQmlApplicationEngine+window
此方式加载QML :QML 拥有窗口的完整控制权,可以直接设置标题、窗口尺寸等属性
#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();
}
2、QQuickView+Item
此方式加载QML :对窗口的控制权(标题、窗口尺寸)是在 C++代码中,QML 文件是以 Item (及 以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();
}
3、QQuickWidget
此方式加载QML :QQuickWidget是继承于 QWidget 控件,这种方式主要是用于在 QWidget 界面上加载 QML 界面
QQuickWidget *view = new QQuickWidget;
view->setSource(QUrl::fromLocalFile("myqmlfile.qml"));
view->show();
QWidget中加载QML页面并设置透明背景
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();
参考
https://blog.csdn.net/luoyayun361/article/details/77113516/
https://blog.csdn.net/qq_37996632/article/details/113284468
https://blog.csdn.net/qq_34139994/article/details/105195447
版权声明:
作者:小何
链接:https://ligo100.cn/houduanjishu/qt/501.html
来源:小何博客
文章版权归作者所有,未经允许请勿转载。

共有 0 条评论