关于QQuick中C++和qml之间的变量值交互

1、qml-qml之间变量传递

两个子组件通过父组件传递变量值,例如我在ADS.qml中定义的一个bool值visibleADS,通过父组件main.qml传递给另一个子组件PointMoveControlPanel.qml,实现通过ADS控件中的按钮控制PointMoveControlPanel控件的显示与隐藏效果。

父组件:Main.qml,子组件ADS.qml中bool visibleADS通过Main.qml传递给PointMoveControlPanel.qml。

在ADS.qml中定义 property bool visibleADS: true,定义一个信号toggleControlPanelVisible,用于通知外部visibleADS的变化。

通过按钮或其他控件改变visibleADS的值,并通过toggleControlPanelVisible通知外部

外部的值改变后同步触发PointMoveControlPanel.qml中的值变化。

如图中,变化后的visibleADS将值传给了visibleFlag,同步触发了PointMoveControlPanel下visible属性值visibleFlag,完成变量传递。

2、qml-C++之间的变量传递

2.1 在qml中使用C++的函数

在main.cpp中注册C++文件

在qml中直接“注册名.someMethod() ”调用即可

2.2 在qml中使用C++的变量

在C++中定义用于传递变量的函数,如下图中dataReceived函数,在C++中使用emit+函数名,来触发该函数。

在qml中定义Connections,用于连接该函数。

target用于指向接收变量的C++实例(在main.cpp中注册的),on+函数名用于对接C++中定义的发送用的函数,例如dataReceived函数在qml中就是onDataReceived,connectionStatusChanged函数就是onConnectionStatusChanged。

2.3 在C++中使用qml的变量

在qml中定义具体的变量。

在某个控件中给该变量赋值。

在qml中点击某个控件触发传递变量的过程,例如点击按钮,将TextField中用户输入的amsAddr传给后端用于通信。

未完待续·······

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值