我是QML
&的新手Qt
。我正在尝试制作多个TextInput
元素,这些元素可以在触发text
时发送自己的onEditingFinished
。以下是我在TextInput
中创建的MyTextField.qml
项:
MyTextField.qml
import QtQuick 2.5
import QtQuick.Controls 1.4
Item {
implicitHeight: 200
implicitWidth: 1000
property alias inputMethodHints: myTextField.inputMethodHints
property alias text: myTextField.text
Rectangle {
anchors.fill: parent
radius: 40
}
TextInput {
id: myTextField
objectName: "myTextField"
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
font.pixelSize: 300
color: 'white'
signal qmlSignal(string msg)
onEditingFinished: qmlSignal(text) //This works
}
}
我正在尝试在另一个TextInput
文件中使用上述qml
元素,如下所示:
SomeOtherPage.qml
Column {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: theme.defaultMargin
MyTextField {
id: textfield1
objectName: "textfield1"
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("some text")
signal qmlSignal11(string msg)
onEditingFinished: qmlSignal11(text) //This doesn't work !!
}
MyTextField {
id: textfield2
objectName: "textfield2"
anchors.left: parent.left
anchors.right: parent.right
text: qsTr("some other text")
signal qmlSignal22(string msg)
onEditingFinished: qmlSignal22(text) //This doesn't work !!
}
}
在MyTextField
块中,QML根本不允许我使用onEditingFinished
。当我运行应用程序时,它会抱怨Cannot assign to non-existent property "onEditingFinished"
。
如果我从我创建的父onEditingFinished
处理TextInput
,它就可以正常运行将信号发送到我的C++
课程。但我想在onEditingFinished
& {}中使用textfield1
textfield2
。 Qml报告onEditingFinished
属性不可用。 如何在onEditingFinished
&中提供textfield1
{} textfield2
以便我发送我创建的每个唯一文本字段的文本。
答案 0 :(得分:4)
从MyTextField.qml的外部只能看到根元素,它的属性,信号和方法。就像你已经为内部myTextField的一些属性设置别名一样,你也必须从外面转发你想要使用的信号:
<强> MyTextField.qml 强>
import QtQuick 2.5
import QtQuick.Controls 1.4
Item {
id: root
...
signal editingFinished() // <==
...
TextField {
id: myTextField
...
onEditingFinished: root.editingFinished() // <==
}
}