首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

关于两个qml组件其间的信号/槽通信

2013-01-11 
关于两个qml组件之间的信号/槽通信如果使用signal/slot来实现两个qml组件之间的通信,一个组件发信号,另一

关于两个qml组件之间的信号/槽通信
如果使用signal/slot来实现两个qml组件之间的通信,一个组件发信号,另一个组件接收信号,该怎么样实现?
[解决办法]
你可以在主qml里面定义信号与槽的关系,点击的时候发个定义好的信号,其他的qml接收这个信号就可以,具体的内容不好说
[解决办法]

引用:
引用:组件是动态创建的还是静态的?
是动态创建的。在通信方面,和静态创建的区别主要是什么?

静态创建是在QML里完成的,所以可以使用描述性语法,即onXXX的方式去写,而动态创建的则不行,因为动态对象创建只能在JS里完成,它应该使用connect方法去连接。

请看文档QML Signal and Handler Event System里的Connecting Signals to Methods and Signals部分。
[解决办法]
A.qml:

Item{
 id:_a
 width:200
 height:200
 color:"red"
 function showB(){
   var component = Qt.createComponent("B.qml");

        if (component.status == Component.Ready) {
            var bQml = component.createObject(_a);
            bQml.xClicked.connect(doSomething);// 实现两个qml组件之间的通信
        }
 }
 function doSomething(msg){
   console.log(msg+"do something");
 }
 MouseAea{
  anchors.fill parent
  onClicked:showB()
 }
}

----------------

B.qml:

Item{
 id:_b
 width:100
 height:100
 color:"blue"
 signal xClicked(string msg)
 MouseArea{
   anchors.fill:parent
   onClicked:{
    _b.xClicked("test")
    _b.destroy()
   }
 }
}

热点排行