QML类型说明-Connections

Connections

ImportStatement:   import QtQml 2.2

 

Properties

ignoreUnknownSignals: bool

target : Object

 

DetailedDescription

这个组件创建一个到QML信号的连接。当我们连接QML信号时,一般使用on<Signal>句柄来进行信号处理,像下面这样:

MouseArea {

    onClicked: { foo(parameters) }

}

然而在一些情况下,我们不能使用这种方式连接信号:

1、一个信号连接到多个处理

2、在信号发送者之外创建处理

3、连接的目标没有在QML中定义

当上面任何一个功能被需要时,就是Connections大展身手的时候。

上面鼠标的连接等同于下面的代码:

MouseArea {

    Connections {

        onClicked: foo(parameters)

    }

}

更普遍的情况是我们在信号发射者之外连接该信号。如下例:

MouseArea {

    id: area

}

// ...

Connections{

    target: area

    onClicked: foo(parameters)

}

 

PropertyDocumentation

ignoreUnknownSignals: bool

通常连接到不存在的信号会产生运行错误。如果这个属性设置为真,那么错误将被忽略。当我们连接到不同的对象,每个对象处理一组不同的信号时,有的对象没有A信号,有的对象没有B信号,当我们忽略不存在的信号,程序就能正常工作。

 

target :Object

发送信号的对象。如果没有设置,默认目标是父。如果设置为空,在它变得不为空之前,没有连接会被建立,也没有信号会被处理。
QML(Qt Meta-Object Language)是一种用于构建用户界面的声明性语言,它是Qt框架中的一部分。QML允许开发者使用简洁的语法来描述用户界面的结构和行为,并且可以与C++代码进行无缝集成。 在QML中,可以使用Connections元素来实现不同QML文件之间的通信。Connections元素用于连接信号,以便在不同的QML文件之间进行消息传递。 下面是一个示例,展示了如何在两个QML文件之间使用Connections进行通信: 1. main.qml文件: ``` import QtQuick 2.0 Rectangle { width: 200 height: 200 signal messageReceived(string message) Connections { target: secondQml // 指定目标QML文件 onMessageSent: { console.log("Message received in main.qml:", message) } } MouseArea { anchors.fill: parent onClicked: { messageReceived("Hello from main.qml") // 发送消息给目标QML文件 } } } ``` 2. secondQml.qml文件: ``` import QtQuick 2.0 Rectangle { id: secondQml width: 200 height: 200 signal messageSent(string message) Connections { target: main // 指定目标QML文件 onMessageReceived: { console.log("Message received in secondQml.qml:", message) } } MouseArea { anchors.fill: parent onClicked: { messageSent("Hello from secondQml.qml") // 发送消息给目标QML文件 } } } ``` 在上面的示例中,main.qml和secondQml.qml是两个独立的QML文件。通过Connections元素,它们可以相互发送和接收消息。 在main.qml中,定义了一个signal messageReceived用于接收来自secondQml.qml的消息。在MouseArea的onClicked事件中,调用messageReceived发送消息给secondQml.qml。 在secondQml.qml中,定义了一个signal messageSent用于接收来自main.qml的消息。在MouseArea的onClicked事件中,调用messageSent发送消息给main.qml。 通过Connections元素,main.qml和secondQml.qml可以监听对方的信号,并执行相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值