QML之使用Loader加载QML组件的一些问题

一.接收来自加载的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)