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

Posted

技术标签:

【中文标题】如何以编程方式按下 QML 按钮?【英文标题】:How to programmatically press QML Button? 【发布时间】:2015-09-06 16:54:27 【问题描述】:

我正在 QML 中构建一个对话框。我有一些TextField,但我希望如果用户按下 enteraccepted 信号被发出),id: okButton 被按下,实际上在视觉上激活它片刻。

我看到pressed 属性是只读的。

谢谢!

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

我收到通知回来了,只是注意到了这一点。我想说这种方法不会做问题所要求的,即“在视觉上激活它片刻”。这个答案会发出 clicked 信号,但我怀疑按钮的视觉状态会改变。不过我还没有测试过..【参考方案2】:

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

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() 信号的文档:

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

【讨论】:

以上是关于如何以编程方式按下 QML 按钮?的主要内容,如果未能解决你的问题,请参考以下文章

在swift3中按下按钮时如何以编程方式执行segue或呈现视图

按钮按下以编程方式将新行添加到 ListView,如何?

如何以编程方式在android中检测设备电源按钮按下两次

Qt5 - QML:如何正确连接 ProgressBar 和 Button 以进行长时间运行的循环计算

如何以编程方式在按钮点击时隐藏 UIPickerview?

如何以编程方式推送 UICollectionView? [复制]