因为项目需求,需要将 qml 实现的瓦片地图嵌入 mainwindow 中,以便于实现数据库存取数据,特意学习了一下,这里分享给大家。
QQuickWidget 是 QT 中专门用于将 qml 实现的窗口界面嵌入 QWidget 或 QMainWindow 的控件,使用也比较方便,这里分享两种方法将 QML 窗口嵌入 QWidget 或 QMainWindow 中。
方法一:在 ui 文件中嵌入
点击运行会报错,原因是缺少模块,打开 .pro
文件,引入 quickwidgets 模块:
//引入前
QT += core gui
//引入后
QT += core gui quickwidgets
方法二:使用代码嵌入
.pro
文件,引入 quickwidgets 模块:QT += core gui quickwidgets
#include
QQuickWidget* widget = new QQuickWidget(this);
widget -> setSource(QUrl("qrc:BDYQml.qml"));
使用 C++ 向嵌入窗口中的 QML 传递数据
//使用以下方式可向 qml 传递数据,在 qml 中直接使用 obj 即可
widget -> rootContext() -> setContextProperty(obj, value);
使用 C++ 获取嵌入窗口中的 QML 的对象
//使用以下方式可获取 qml 对象,并以 QQuickItem* 格式返回
QQuickItem* qmlItem = widget -> rootObject();
学习分享,一起成长!接触QT的时间不长,有不足之处,欢迎大佬指出来,我会进行更正。有问题可以发送邮件至 [email protected] ,不定时上线查收。