gpt4 book ai didi

qt - QML:通过信号与曾祖 parent 交流

转载 作者:行者123 更新时间:2023-12-02 04:53:23 29 4
gpt4 key购买 nike

我目前正在学习 Qt 以进行一些跨平台开发,并且我正在尝试使用 QML 来完成所有事情。我知道有很多方法可以使用 C++ 解决我的问题,但我想忠于模型并使用 QML。

这里是:如果我使用加载程序来显示 qml 文件,如以下代码所示,我如何从 secondPage.qml 与 main.qml 通信?

我假设这将是通过信号,但经过进一步阅读,似乎信号上的所有操作都在发送它的类中(使用 connected 方法)。这是我的资源:http://qt-project.org/doc/qt-4.8/qmlevents.html#connecting-signals-to-methods-and-signals

或者,这可能是 QML 应用程序的错误设计。在事情变得不可收拾之前,我试图摆脱使用单一源文件的方式......

主.qml:

Rectangle {
id: background
...
Item{
id: item1
Loader {
....
id:pageLoader;
source : "secondPage.qml"
focus:true;
}
}

最佳答案

您可以在 SecondPage.qml 中声明一些信号并将它们连接到 Main.qml 的函数。

如下所示,假设你在 secondPage.qml 中定义了 secondPageSignal() 并且你想在 secondPage 的信号上调用 Main.qml 中的 doSomething() 函数,你可以在 Loader 的 onLoaded 处理程序中连接它。

Rectangle {
id: background
...

function doSomething() {
}
Item{
id: item1
Loader {
....
id: pageLoader;
source : "secondPage.qml"
focus:true;

onLoaded:{
pageLoader.item.secondPageSignal.connect(background.doSomething);
}
}
}
}

关于qt - QML:通过信号与曾祖 parent 交流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18407396/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com