如何在其他页面上调用函数

时间:2014-10-22 13:46:52

标签: javascript qml qt5 qt-quick qtquick2

我的问题没有找到答案,所以我想解释一下。

我有一些QML页面,我使用StackView对象管理我的页面,我想调用第2页第1页的函数... 例如

//Page 1
Item{
id: page1
function test(){
   console.debug("Page 1 man ! ");
}
... something 
}
}

我想调用第1页上的测试功能

//Page 2
Item{
id: page2
Compoment.onCompleted: page1.test();
... something 
}
}

任何人都有解决方案吗?

yekmen

1 个答案:

答案 0 :(得分:0)

由于范围限制,您无法直接从另一个页面访问功能。因此解决方案是在根项目中创建一些代理功能。小例子:

Item {
    id: root
    function proxy(target_page) {
        switch(target_page) {
            case 1: page1.test(); break;
            case 2: page2.test(); break;
            case 3: page3.test(); break;
        }
    }
    Item {
        id: page1
        function test() {
        }
        Component.onCompleted: {
            root.proxy(2);
        }
    }
    Item {
        id: page2
        function test() {
        }
    }
    Item {
        id: page3
        function test() {
        }
    }

}

这不是现场的例子,只是想法。这里page1通过根元素函数调用page2初始化。