是否可以防止右键单击打开QGraphicsTextItem
上的默认上下文菜单?带有“撤消,重做,剪切,复制,粘贴..”菜单。在Ubuntu 18.04上,那就是。我不知道这在Windows上的表现。
在我的视图中,我重写了鼠标按下处理程序以使用右键单击,并尝试在item类本身中执行此操作。这实际上确实阻止了Qt 5.10.0
上的菜单,但由于某些原因,{t {1}}上的菜单不再存在:
5.11.1
如果执行此操作,则对项目本身没有任何作用:
void EditorView::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::RightButton)
{
return;
}
...
doOtherHandlingStuff();
...
}
答案 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();
}