TextField更改背景

时间:2019-07-09 13:02:25

标签: qt qml textfield

我有一个自定义按钮,当我按下该按钮时,我想将文本字段的颜色更改为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 :(得分:0)

这是因为backgroundQQuickItem而不是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个可用的标记,以及使用StateTransition的标记,这可能会使解决方案更易读