如何以编程方式按下QML按钮?

8
我正在QML中构建对话框。我有一些TextField,但是如果用户按下enter(发出accepted信号),我希望id: okButton被按下,实际上会在视觉上激活它一段时间。
我看到pressed属性只读。
谢谢!
2个回答

14

您可以简单地调用clicked()信号以模拟按钮按下:

Keys.onReturnPressed: {
    clicked()
    event.accepted = true
}

我从通知回来,刚刚注意到这个。我认为这种方法不能完成问题所要求的“在视觉上激活它一会儿”。这个答案将发出点击信号,但我怀疑按钮的视觉状态根本不会改变。虽然我还没有测试过。 - Mitch

3
你可以在模拟点击时将其可勾选,以便在短时间内完成操作并使用已勾选属性。
import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2

ApplicationWindow {
    title: qsTr("Hello World")
    width: 640
    height: 480
    visible: true

    Timer {
        id: timer
        running: true
        repeat: true
        interval: 100
        onTriggered: {
            button.checked = false;
            button.checkable = false;
        }
    }

    Row {
        TextField {
            anchors.verticalCenter: parent.verticalCenter

            onAccepted: {
                button.checkable = true;
                button.checked = true;
                timer.start();
            }
        }

        Button {
            id: button
            text: "Submit"
            anchors.verticalCenter: parent.verticalCenter
        }
    }
}

TextFieldaccepted()信号的文档中:

当用户按下回车键或者Enter键时,会触发该信号。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接