[英]QTextObjectInterface with Qml TextEdit (QQuickTextEdit)
[英]Multiple TextEdit in a form in qml
假設我想用表單構建一個頁面。 當我單擊表單時,我想打開一個鍵盤。 我還想通過一些驗證來調整表單的驗證
這是一個例子(偽代碼)
Item {
Keyboard{id: keyboard}
Column {
TextEdit {
id: nameEdit
onClicked: keyboard.open()
onTextChanged: checkIfOk()
}
TextEdit {
id: userName
onClicked: keyboard.open()
onTextChanged: checkIfOk()
}
TextEdit {
id: password
onClicked: keyboard.open()
onTextChanged: checkIfOk()
}
}
function checkIfOk() {
buttonOk.enabled = password.text.length > 0 &&
userName.text.length > 0 &&
nameEdit.text.length > 0
}
Button {
id: buttonOk
onClicked {
userBackend.createUser({.name: nameEdit.text,
.userName: userName.text,
.pwd: password.text}
}
}
}
所以,我試圖用一個中繼器來分解它,比如:
Item {
Keyboard{id: keyboard}
Column {
id: column
Repeater {
model: 3
TextEdit{}
}
}
Button {
id: buttonOk
enabled: //??
}
}
但是我怎樣才能以一種干凈的方式獲取孩子的屬性並將他們的結果綁定到一個屬性呢?
從children
那里獲取物品是唯一且更好的方法嗎?
您可以使用itemAt function 的中繼器。 在線 qml 編碼應用程序暫時沒有響應,所以我不嘗試。 希望它有效。
Item {
Column {
id: column
Repeater {
id: textEditRepeater
model: 3
TextEdit {
onTextChanged: checkIfOk()
}
}
}
function checkIfOk() {
for (int i = 0; i < textEditRepeater.count; ++i) {
var item = textEditRepeater.itemAt(i);
if (item === null || item.text.length === 0) {
buttonOk.enabled = false;
return;
}
}
buttonOk.enabled = true;
}
Button {
id: buttonOk
enabled: false
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.