【问题标题】:How to set pressed=false for mouse area QML如何为鼠标区域QML设置pressed = false
【发布时间】:2017-03-14 15:45:43
【问题描述】:

我遇到了下一种情况:

我有一个带有 MouseArea 的项目。这是我在屏幕上的按钮 - 键盘。

  1. 我要长按键盘上的按钮。
  2. 我没有松开这个按钮(按住它)。
  3. 在 onPressed{} 信号处理程序中,我正在打开另一个屏幕。
  4. 我的键盘按钮不再收到释放信号。
  5. 当我回到前一个键盘时 - 我的按钮仍然按下。

我尝试设置“pressed”=false,但这是只读属性。

我尝试发出released() 信号,但它没有清除“按下”标志。 但我认为我做错了。函数释放采用参数-鼠标-鼠标事件。 mouse 参数提供有关单击的信息,包括释放单击的 x 和 y 位置,以及单击是否被按住。而且我没有找到如何正确设置它。

我已尝试更新 MouseArea,但没有帮助。

我不知道我还有什么可以尝试取消“按下”标志。

我的鼠标区域很简单:

MouseArea {
    id: mouseArea

    property bool haveToRelease: false

    onHaveToReleaseChanged: {
        if(haveToRelease)
        {
            console.log("BaseButton.qml: call canceled()")
            released()
            haveToRelease = false
        }
    }

    anchors.fill: parent
    hoverEnabled: true

    onReleased: {
        console.log("BaseButton.qml: onReleased")
    }

    onPressedChanged: {
        console.log("BaseButton.qml: onPressedChanged, pressed = ", pressed)
    }
}

在我的按钮中,我有下一个处理程序:

onVisibleChanged: {
    if(config.isToyota && !visible && pressed) {
        console.log("Key.qml :: config.isToyota && !visible && pressed")
        releaseButton = true
    }
}

如果有人帮我解决这个问题,我会很高兴! 非常感谢!

【问题讨论】:

  • 我无法遵循您的代码。你能把它改成mvce好吗?所以包括onPressed 和所有其他必要的东西,运行它,看看你的问题。因为正如@folibis 所示,它有效。所以错误一定发生在其他地方。

标签: qt qml qt5


【解决方案1】:

对我来说,按预期工作:

Window {
    visible: true
    width: 640
    height: 480

    Rectangle {
        width: 100
        height: 100
        anchors.centerIn: parent
        color: "orange"
        MouseArea {
            anchors.fill: parent
            onPressed: {
                console.log("pressed");
                wnd.show();
                released(mouse);
            }
            onReleased: {
                console.log("released");
            }
            onPressedChanged: console.log("pressed: " + pressed );
        }
    }

    Window {
        id: wnd
        width: 200
        height: 200
    }
}

输出:

qml: pressed
qml: released
qml: pressed: true
qml: pressed: false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多