QGraphicsSiteMgroup qt上的上下文菜单
如果我们长按QGraphicsSiteMgroup,我会尝试在Qt中使用上下文菜单。首先,我尝试了以下基本方法: my.h: 我的cpp:QGraphicsSiteMgroup qt上的上下文菜单,qt,contextmenu,Qt,Contextmenu,如果我们长按QGraphicsSiteMgroup,我会尝试在Qt中使用上下文菜单。首先,我尝试了以下基本方法: my.h: 我的cpp: void myclass::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { if (event->GraphicsSceneMouseDoubleClick) { qDebug() << "Test"; } } 但这件简单的事是行不
void myclass::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
if (event->GraphicsSceneMouseDoubleClick)
{
qDebug() << "Test";
}
}
但这件简单的事是行不通的。我的代码有什么问题?contextMenuEvent的当前声明没有覆盖QMainWindow的相应方法,因为它具有不同的属性
因此,您需要更换:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
关于:
注意:C++11允许在编译时借助override关键字查找此问题:
你忘了Q_OBJECT macro吗?不工作-你是什么意思?@Glutton我用.h顶部编辑了不工作我什么都不想你用C++11吗?如果是,请尝试在contextMenuEvent声明后添加override关键字。我不确定QGraphicsSceneContextMenuEvent是否派生自QContextMenuEvent。如果我是对的,您将得到编译时错误。@GLUTTON Like contextMenuEvent::override?谢谢,这是工作。但是现在如何将它长时间左键单击并放到QGraphicsSiteMgroup上呢?
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
void contextMenuEvent(QContextMenuEvent *event);
void contextMenuEvent(QContextMenuEvent *event) override;