qt:更改qcontextmenu触发器
通常,单击鼠标右键会导致QContextMenuEvent。但是有可能改变按钮吗?我的意思是,我想使用鼠标左键和“ALT”修改器。我试图在mousePressEvent中访问它,但它的工作方式不正确。您可以通过子类化QWidget来实现这一点:qt:更改qcontextmenu触发器,qt,contextmenu,Qt,Contextmenu,通常,单击鼠标右键会导致QContextMenuEvent。但是有可能改变按钮吗?我的意思是,我想使用鼠标左键和“ALT”修改器。我试图在mousePressEvent中访问它,但它的工作方式不正确。您可以通过子类化QWidget来实现这一点: class MyWidget : public QWidget { public: MyWidget(QWidget *parent = 0); protected: void mouseReleaseEvent(QMouseEvent
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
}
}
}
请展示你是如何做到这一点的。这与“mouseReleaseEvent”有关吗。我采纳了你的建议,解决了一些问题。我在QGraphicscene和QGraphicsItem上使用此解决方案,我不希望在显示菜单时选择该项。