gpt4 book ai didi

c++ - 如何防止 QGraphicsTextItem 上的默认上下文菜单?

转载 作者:搜寻专家 更新时间:2023-10-31 01:26:25 26 4
gpt4 key购买 nike

是否可以阻止右键单击打开 QGraphicsTextItem 上的默认上下文菜单?带有“撤消、重做、剪切、复制、粘贴...”的菜单。在 Ubuntu 18.04 上,就是这样。我不知道这在 Windows 上的表现如何。

我已经覆盖了鼠标按下处理程序以在我的 View 中执行右键单击,并尝试在项目类本身中也这样做。这实际上确实阻止了 Qt 5.10.0 上的菜单,但出于某种原因在 5.11.1 上不再出现:

enter image description here

void EditorView::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::RightButton)
{
return;
}

...
doOtherHandlingStuff();
...
}

如果我这样做,对项目本身没有任何影响:

void TextEdit::mousePressEvent(QGraphicsSceneMouseEvent * event)
{
event->ignore();
return;
}

最佳答案

你必须覆盖 QGraphicsTextItem 的 contextMenuEvent 方法:

#include <QtWidgets>

class GraphicsTextItem: public QGraphicsTextItem
{
public:
using QGraphicsTextItem::QGraphicsTextItem;
protected:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override
{
event->ignore();
}
};

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView w{&scene};
auto it = new GraphicsTextItem("Hello World");
it->setTextInteractionFlags(Qt::TextEditable);
scene.addItem(it);
w.show();
return a.exec();
}

关于c++ - 如何防止 QGraphicsTextItem 上的默认上下文菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55425085/

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