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

时间:2019-03-29 20:31:19

标签: c++ qt qt5 qgraphicsview qgraphicsscene

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

在我的视图中,我重写了鼠标按下处理程序以使用右键单击,并尝试在item类本身中执行此操作。这实际上确实阻止了Qt 5.10.0上的菜单,但由于某些原因,{t {1}}上的菜单不再存在:

enter image description here

5.11.1

如果执行此操作,则对项目本身没有任何作用:

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

    ...
    doOtherHandlingStuff();
    ...
}

1 个答案:

答案 0 :(得分:3)

您必须重写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();
}