TextField изменить фон - PullRequest
0 голосов
/ 09 июля 2019

У меня есть пользовательская кнопка, при нажатии которой я хочу изменить цвет текстовых полей, в которых нет текста, записанного внутри, по умолчанию на красный в течение 2 секунд, и всплывающую подсказку, в которой говорится, что вы должны написатьЕсть что-то, прежде чем идти вперед.

TextField {
    id: textfield_derivat
    placeholderText: qsTr("Write a comment here...")
    horizontalAlignment: Text.AlignHCenter
}


CustomSelectionButton {
    id: go_button
    x: 378
    y: 342
    text: "Let's go!"
    anchors.rightMargin: 19
    anchors.bottomMargin: 17
    anchors.bottom: parent.bottom
    anchors.right: parent.right
    height: default_button_height - 10
    font.pointSize: default_font_size
    MouseArea {
        anchors.fill: parent
        onClicked: {
            if( check_text_field(textfield_derivat.text) === true )
            {
                /* code here */
            }
            else
            {
                textfield_derivat.text = "Please fill up the text"
                textfield_derivat.background = "red"
            }

Я получил эту ошибку при этом - Ошибка: Невозможно назначить QString для QQuickItem *

1 Ответ

0 голосов
/ 09 июля 2019

Это потому, что background является QQuickItem, а не QString. Вы должны написать это (убедитесь, что ваш первоначальный цвет соответствует вашему желанию):

TextField {
    id: textfield_derivat
    placeholderText: qsTr("Write a comment here...")
    horizontalAlignment: Text.AlignHCenter

    background: Rectangle { 
        id: txt_back
        implicitWidth: 200
        implicitHeight: 40
        color: "white" 
    }
}

...

//textfield_derivat.background = "red"
txt_back.color = "red"

Взято из: https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-textfield

Обратите внимание, что в QML доступно Animation вместе с использованием State и Transition, это может сделать более читабельное решение

...