qt:更改qcontextmenu触发器

时间:2014-06-20 07:10:47

标签: qt contextmenu

通常,单击鼠标右键时会导致QContextMenuEvent。但是可以更改按钮吗?我的意思是我想用鼠标左键和#34; ALT"修改。我试图在mousePressEvent中访问它,但它没有以正确的方式工作。

1 个答案:

答案 0 :(得分:0)

您可以通过继承QWidget:

来完成此操作
class MyWidget : public QWidget
{
public:
    MyWidget(QWidget *parent = 0);

protected:
    void mouseReleaseEvent(QMouseEvent *event);
};

及其实施:

MyWidget:: MyWidget(QWidget *parent): QWidget(parent)
{
}

void MyWidget::mouseReleaseEvent(QMouseEvent *event)
{
    QMenu menu;
    QAction *act1 = menu.addAction("action1");
    QAction *act2 = menu.addAction("action2");
    if(event->button() == Qt::LeftButton&&
            event->modifiers()&Qt::AltModifier){

        QAction *selectedAction = menu.exec(event->globalPos());
        if(selectedAction == act1)
        {
            //do something
        }else if( selectedAction == act2 ){
            //do something else
        }
    }
}