QML
& Qt
의 새로운 기능입니다. onEditingFinished
이 발생하면 text
을 보낼 수있는 여러 개의 TextInput
요소를 만들려고합니다.정의 된 공통 TextInput을 재사용하여 개별 TextInput 요소에서 onEditingFinished와 같은 신호를 만드는 방법
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
}
}
나는 다음과 같은 또 다른 qml
파일에 위의 TextInput
요소를 사용하는 것을 시도하고있다 :
SomeOtherPage 내가 MyTextField.qml
에서 생성 한 TextInput
항목입니다 다음 .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"
이 표시됩니다. 내가 만든 부모 TextInput
에서 onEditingFinished
을 처리 할 경우
, 그것은 & 내 C++
클래스에 신호를 보내 잘 작동합니다. 하지만 onEditingFinished
을 textfield1
& textfield2
에 사용하려고합니다. Qml은 onEditingFinished
속성을 사용할 수 없다고보고합니다.onEditingFinished
을 textfield1
& textfield2
에서 어떻게 사용할 수 있도록 만들면 각 고유 한 텍스트 필드의 텍스트를 보낼 수 있습니다.
오류 - 항목을 : 이미 내부하여 myTextField의 몇 가지 속성 별명을, 당신은 또한 신호를 전달해야합니다 것처럼 당신은 외부에서 사용하려면 onEditingFinished '신호가 없습니다. 그리고 그것은 절대적으로 옳습니다. MyTextField에는 그러한 신호가 없습니다. 그래서 당신은'MyTextField'의 루트에 신호를 추가하고'TextInput.onEditingFinished'에서 방출해야합니다. – folibis