Qt Quick实践系列 |
您所在的位置:网站首页 › qt加载qml › Qt Quick实践系列 |
❝QQuickWidget类提供了一个用于显示Qt Quick用户界面的小部件。❞ QQuickWidget底层继承的是QWidget,但它可以加载Qml文件(组件),但我们有时候需要和Qml文件(组件)数据交互使用,本文介绍几种QQuickWidget与Qml交互数据的方法。 通过设置上下文属性setContextProperty可以将变量设置到Qml环境中。 C++代码:QQuickWidget *view = new QQuickWidget; QString str = "Hello world"; /* 设置变量到Qml中 */ view->rootContext()->setContextProperty("str", str); view->setSource(QUrl("qrc:/View.qml")); view->show();Qml代码:import QtQuick 2.0 Rectangle { width: 640; height: 320 Text { anchors.centerIn: parent; text: str /* 引用C++传入的str变量。*/ } }通过注册Qml类型方式使用qmlRegisterType注册一个QObject派生类到Qml中。 C++代码:/* 导入MyObject类到Qml中 */ qmlRegisterType("MyModel", 1, 0, "MyObject"); QQuickWidget *view = new QQuickWidget; view->setSource(QUrl("qrc:/View.qml")); view->show();Qml代码:import QtQuick 2.0 /* 导入MyModel模块 */ import MyModel 1.0 Rectangle { width: 640; height: 320 /* 使用MyModel模块的MyObject对象 */ MyObject { id: myObject /* 设置text属性 */ text: "12345" /* 读取打印text属性 */ Component.onCompleted: console.log(text) } }「注意:导入的类型必须实例化才能使用」。 通过调用Qml函数的方式使用invokeMethod可以调用Qml中的函数。通过设置Qml的实例,函数名字,输入参数和返回值即可调用Qml中的函数。 C++代码:QQuickWidget *view = new QQuickWidget; view->setSource(QUrl("qrc:/View.qml")); QVariant retVal; QMetaObject::invokeMethod(view->rootObject(), /* Qml实例 */ "execute", /* 函数名字 */ Qt::DirectConnection, /* 连接方式 */ Q_RETURN_ARG(QVariant, retVal), /* 标记返回值 */ Q_ARG(QVariant, "Hello"), /* 输入参数1 */ Q_ARG(QVariant, "world"));/* 输入参数2 */ qDebug() |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |