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

时间:2015-09-06 16:54:27

标签: qt qml qtquick2

我正在用QML构建一个对话框。我有一些TextField,但是如果用户按输入(发出accepted信号),我会按下id: okButton,实际上是暂时激活它。

我看到pressed属性是只读的。

谢谢!

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:3)

当您使用checkable属性模拟点击时,您可以将其设为checked一小段时间:

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
        }
    }
}

来自TextField的{​​{3}}信号的文档:

  

按下Return或Enter键时会发出此信号。