一.接收来自加载的qml发出的信号
使用Connections元素可以接收到任何发送自加载组件的信号。
main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
visible: true
property bool isFirst : false;
width: 200
height: 200
Loader {
id: pageLoader
source: "Page1.qml"
}
Connections {
target: pageLoader.item
onMessage: console.log(msg);
}
}
page1.qml
import QtQuick 2.12
Rectangle {
id: myItem
signal message(string msg)
width: 100; height: 100
MouseArea {
anchors.fill: parent
onClicked: myItem.message("clicked!");
}
}
加载与被加载组件中都有相同的事件,那么需要设置Loader的属性focus为true,且设置被加载组件 focus: true才能让事件不被传播到被加载组件。
本文介绍如何在QML中使用Connections元素接收加载组件发出的信号。通过Loader加载Page1.qml,利用onMessage处理函数捕获并记录由MouseArea触发的消息事件。为避免事件误传,需设置Loader和被加载组件的focus属性。
425

被折叠的 条评论
为什么被折叠?



