qt - 检测按下并按住 QML 中的按钮

标签 qt button menu qt4 qml

我想在用户按住按钮时打开上下文菜单(为了方便起见,我使用 Button)。如果我做

    Button
    {
        text: model.ualabel

        MouseArea
        {
            preventStealing: true
            anchors.fill: parent
            onPressAndHold: uaContextMenu.open()
        }

        ContextMenu
        {
            id: uaContextMenu
            MenuLayout
            {
                MenuItem { /**/ } 
            }
        }
    }

然后负责 pressAndHold 的 MouseArea 会窃取所有手势,即使无法单击 Button。我究竟做错了什么?我正在使用 Qt 4.7 并导入 QtQuick 1.1com.nokia.meego 1.0
谢谢

最佳答案

我发现可以像这样在 QML 的 Button 上模拟按住:

Button {
    id: button

    signal pressAndHold()

    Timer {
        id: longPressTimer

        interval: 2000 //your press-and-hold interval here
        repeat: false
        running: false

        onTriggered: {
            button.pressAndHold()
        }
    }


    onPressedChanged: {
        if ( pressed ) {
            longPressTimer.running = true;
        } else {
            longPressTimer.running = false;
        }
    }
}

关于qt - 检测按下并按住 QML 中的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17857570/

相关文章:

linux - 如何强制 QProcess 优先级

c++ - 如何决定是否为窗口的小部件创建一个单独的类?

html - div 和图像上的悬停效果在 css 中不起作用

css - 如何解决我的 Wordpress 导航栏的这个问题?

c - 设计菜单,重复消息

menu - Vuetify 菜单不起作用 : Property or method “on” is not defined on the instance but referenced during render

c++ - QAbstractItemModel data() 永远不会被调用

Qt 5.8 Apple 通知服务器握手失败

css - 使 'a' 元素适合按钮大小

javascript - 如何在 React Native 中按下时更改多个按钮的颜色