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传给后端用于通信。
未完待续·······