gpt4 book ai didi

c++ - MouseArea 窃取 QQuickItem 的鼠标事件

转载 作者:行者123 更新时间:2023-11-30 05:02:45 33 4
gpt4 key购买 nike

有一个 QQuickPaintedItem 带有重载的鼠标事件处理程序:

void Plotter::mousePressEvent(QMouseEvent *event)
{
qDebug() << "mousePressEvent";
}

void Plotter::mouseMoveEvent(QMouseEvent* event)
{
qDebug() << "mouseMoveEvent";
}

void Plotter::hoverMoveEvent(QHoverEvent *event)
{
qDebug() << "hoverMoveEvent";
}

我想在 QML 代码中向此 QQuickPaintedItem 添加上下文菜单,因此我必须将 MouseArea 添加到此元素中:

Plotter {
id: plotter
// ...

Menu {
id: contextMenu
MenuItem { text: "Добавить маркер" }
MenuItem { text: "Удалить маркер" }
MenuItem { text: "Удалить все маркеры" }
MenuItem { text: "Установить шаг" }
}

MouseArea {
anchors.fill: parent
acceptedButtons: Qt.RightButton
propagateComposedEvents: true

onClicked: {
if (!mouseScaleButton.checked) {
contextMenu.popup();
}
else
mouse.accepted = false;

}

}
}

但如果我按下右键,它不会捕捉到 QQuickPaintedItem 的 mousePressEvent

您能解释一下为什么会这样吗?

最佳答案

MouseArea 只能启用:!mouseScaleButton.checked

另外,鼠标区域不应该在菜单下方吗?这样它会同时阻止绘图仪和菜单。

此外,仅仅因为您设置了 acceptedButtons: Qt.RightButton 并不一定意味着它会通过左键单击(我还没有测试过)。您可能必须启用这两个按钮并设置 mouse.accepted = false 以防左键单击,以便它可以向下传播。

关于c++ - MouseArea 窃取 QQuickItem 的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707080/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com