gpt4 book ai didi

Qt - 如果加载程序源动态更改,如何连接来自加载程序项的信号

转载 作者:行者123 更新时间:2023-12-05 00:01:01 27 4
gpt4 key购买 nike

我有一个应用程序需要在多个可用屏幕之间切换屏幕。我正在检查 qml 中的加载程序是否可行。

我面临的问题是连接来自加载项目的信号。

我在 qt 文档中使用了一个应用程序示例,发现应用程序 qml 中的 CreateConnection 不能具有 if 条件。

我还尝试使其在函数中发出信号槽连接并调用加载程序的源更改,但这也不起作用。

应用程序.qml

import QtQuick 2.0

Item {
width: 100; height: 100

Loader {
id: myLoader
source: "MyItem.qml"
}

Connections {
target: myLoader.item
// here i tried using if (myLoader.item == "qrc:MyItemOne.qml") , but can't use if
onChangeToSecond: {
myLoader.source = "MyItemTwo.qml"
}

onChangeToFirst: {
myLoader.source = "MyItemOne.qml"
}
}
}

我的ItemOne.qml
import QtQuick 2.0

Rectangle {
id: myItem
signal changeToSecond()

width: 100; height: 100

MouseArea {
anchors.fill: parent
onClicked: myItem.changeToSecond()
}
}

MyItemTwo.qml
import QtQuick 2.0

Rectangle {
id: myItem
signal changeToFirst()

width: 100; height: 100

MouseArea {
anchors.fill: parent
onClicked: myItem.changeToFirst()
}
}

有人知道为此使用 loader 的任何方法,或者不应为此使用 loader?

最佳答案

如果我使用 MyItemOne.qml,你的代码工作正常作为 myLoader.source 的初始值(Qt5.6.0)。但是,它会打印出警告:

QML Connections: Cannot assign to non-existent property "onChangeToFirst"

这是因为 MyItemOne没有定义 changeToFirst信号。 ignoreUnknownSignals Connections 的属性(property)元素可用于抑制警告,或者两个屏幕都应定义相同的信号集。
Loader如果切换时之前的 View 总是完全卸载无关紧要,则可以使用。

关于Qt - 如果加载程序源动态更改,如何连接来自加载程序项的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37235511/

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