上下文菜单长按左键单击Qt

时间:2014-06-14 21:01:41

标签: qt click contextmenu long-integer

如果我们长时间按下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上进行此操作?

1 个答案:

答案 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());
}