我正在尝试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 文件。 不过,我想将逻辑与用户界面分开。
最佳答案
我终于能够修复它了。问题是我假设当拥有 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/