【问题标题】:Context menu long left click Qt上下文菜单长左键单击 Qt
【发布时间】:2014-06-14 21:01:41
【问题描述】:

如果我们长按 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 上使用它?

【问题讨论】:

    标签: qt click contextmenu long-integer


    【解决方案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());
    }
    

    【讨论】:

    • 谢谢,但“菜单” menu.exec(event->globalPos());它必须是一个类。并且长时间左键单击您知道该怎么做吗?
    • 它的工作。您知道如何使用此菜单,仅在 QGraphicsItemGroup 上并长按左键吗?
    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多