如果我们长时间按下QGraphicsItemGroup,我会尝试在Qt中有一个上下文菜单。我尝试过这样的基本事情: 我的.h:
public:
myclass(QWidget *parent = 0);
~myclass();
public slots:
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
private:
Ui::myclassClass ui;
我的cpp:
void myclass::contextMenuEvent(QContextMenuEvent *event)
{
if (event)
{
QMenu *menu = new QMenu;
menu->addAction(new QAction("Action 1", this));
menu->addAction(new QAction("Action 2", this));
menu->addAction(new QAction("Action 3", this));
menu->show();
}
}
它的工作,但只有通过右键单击,菜单才会出现在点击附近。以及如何仅在QGraphicsItemGroup上进行此操作?
答案 0 :(得分:1)
您需要将菜单放在正确的位置,即发生上下文菜单事件的位置(您单击的位置)。插槽看起来像:
void myclass::contextMenuEvent(QContextMenuEvent *event)
{
QMenu menu(this);
menu.addAction(new QAction("Action 1", this));
menu.addAction(new QAction("Action 2", this));
menu.addAction(new QAction("Action 3", this));
// Place the menu in the right position and show it.
menu.exec(event->globalPos());
}