跨qml通信

****Commet.qml
//加载其他文件中的组件 不需要声明称Component
//1.用loader.item.属性 访问属性
//2.loader.item.方法 访问方法
//3.用loader.item.方法.connect(槽)连接信号
        Item {
            Loader{
                id:loader;
                width: 200;
                height: 200;
                source:"qrc:code/CommetOne.qml"
                onLoaded: {
                    loader.item.initok.connect(dook);
                    loader.item.testfunc("123");
                    console.log("load")
                    item.col = "yellow";
                }

            }


        }
        function dook()
        {
            //清除上一个组件的内存
             loader.source="";
             loader.source="qrc:code/CommetOne.qml";
            console.log('Link ok');
        }

****CommetOne.qml
import QtQuick 2.0

Item {
    signal  initok();
    id:com
    property var col: "red"
    Rectangle{
        anchors.fill: parent;
        color: col;
        Component.onCompleted: {
            console.log("***********");
            mm.start();
        }
        TextInput{
            width: 100
            height: 40
        }

    }

    Timer{
        id:mm
        running: true;
        repeat: true;
        interval: 100;
        onTriggered: {
            console.log('dotime')
           initok();

        }
    }
    function  testfunc(x)
    {
        console.log(x);
    }

}

你可能感兴趣的:(qt)