Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QGraphicsSiteMgroup qt上的上下文菜单_Qt_Contextmenu - Fatal编程技术网

QGraphicsSiteMgroup qt上的上下文菜单

QGraphicsSiteMgroup qt上的上下文菜单,qt,contextmenu,Qt,Contextmenu,如果我们长按QGraphicsSiteMgroup,我会尝试在Qt中使用上下文菜单。首先,我尝试了以下基本方法: my.h: 我的cpp: void myclass::contextMenuEvent(QGraphicsSceneContextMenuEvent *event) { if (event->GraphicsSceneMouseDoubleClick) { qDebug() << "Test"; } } 但这件简单的事是行不

如果我们长按QGraphicsSiteMgroup,我会尝试在Qt中使用上下文菜单。首先,我尝试了以下基本方法: my.h:

我的cpp:

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;