簡體   English   中英

qml 中的表單中的多個 TextEdit

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM