2014-06-14 136 views
0

如果我們長按QGraphicsItemGroup,我嘗試在Qt中創建上下文菜單。我嘗試這樣基本的東西: 我.H:上下文菜單左鍵單擊Qt

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

您需要將菜單放置在正確的位置,即發生上下文菜單事件(您單擊的地方)的位置。該插槽將如下所示:

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()); 
} 
+0

謝謝,但我有一個菜單menu.exec(event-> globalPos())的錯誤;它必須是一個班級。而對於長時間左鍵點擊,你知道該怎麼做? – Flavien317

+0

這是工作。你知道如何做這個菜單,只有在QGraphicsItemGroup和長左鍵點擊? – Flavien317

相關問題