gpt4 book ai didi

c++ - 使用别名和 C++ 集成在 .qml 中实现 .ui 文件的逻辑

转载 作者:行者123 更新时间:2023-12-03 12:47:32 25 4
gpt4 key购买 nike

我正在尝试connect the C++ class with QML但我无法在单独的 qml 文件中实现逻辑。当我直接在 ui.qml 文件中添加功能时,它可以工作,但我收到警告:

Functions are not supported in a Qt Quick UI form

我已经尝试过using alias但由于某种原因它不起作用。这是代码:

ReasonsForm.ui.qml:

import QtQuick 2.4
//import io.qt.UserDataProvider 1.0

MenuPage {
id: reasonsPage
property alias myReasons: myReasons

title: qsTrId("reasons")

Description {
id: reasonsText
text: qsTrId("reasons-text")
anchors.bottomMargin: 150
}

//UserDataProvider{id:dataProvider}

MenuTextArea {
id: myReasons
text: qsTrId("aa")
anchors.horizontalCenter: reasonsText.horizontalCenter
anchors.top: reasonsText.bottom
width: reasonsText.width
//this actually works despite the warnings
//onEditingFinished: dataProvider.saveInput("myReasons", text)
}

ReasonsForm.qml:

import QtQuick 2.4
import io.qt.UserDataProvider 1.0

ReasonsForm {
UserDataProvider{id:dataProvider}

myReasons{
onEditingFinished: dataProvider.saveInput("myReasons", text)
}
}

编译器不会提示任何事情,但根本不会调用来自 dataProvider 的方法。非常感谢任何帮助。

编辑:我找到了一种解决方法,但它仍然无法解释为什么代码不起作用。使其在没有 qml 文件的情况下工作的方法是添加

Connections {   
target: myReasons
onEditingFinished: dataProvider.saveInput("myReasons", myReasons.text)
}

到 ui 文件。不过,我想将逻辑与用户界面分开。

编辑二:我误解了什么吗?看来别名对我来说根本不起作用。这是一个不执行任何操作的简单示例(按钮不执行任何操作):enter image description here

最佳答案

我终于能够修复它了。问题是我假设当拥有 ui.qml 和 .qml 文件时,它们已经连接(nameForm.ui.qml 和 name.qml)。需要做的是使用 .qml 文件来显示元素并将 .ui.qml 放入其中,因此在我的情况下我需要做的就是显示/包含 ReasonsForm.qml 文件我也想要 ui 文件的内容,因为 ui 已经显示在 qml 中,如下所示:

ReasonsForm {...

我正在显示 ReasonsForm.ui.qml ,假设这是图形界面,应该用作在 main.qml 或堆栈布局和 ReasonsForm 中显示的主要元素。 qml 只是附加逻辑。然而,首先需要显示的是 qml。

关于c++ - 使用别名和 C++ 集成在 .qml 中实现 .ui 文件的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54362022/

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