#qt #contextmenu
#qt #contextmenu
Вопрос:
Обычно при нажатии правой кнопки мыши вызывается QContextMenuEvent. Но возможно ли изменить кнопку? Я имею в виду, что я хочу использовать левую кнопку мыши с модификатором «ALT». Я пытаюсь получить к НЕМУ доступ в mousePressEvent, но он работает неправильно.
Комментарии:
1. Пожалуйста, покажите, как вы пытаетесь это сделать.
Ответ №1:
Вы можете сделать это, создав подкласс 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::LeftButtonamp;amp;
event->modifiers()amp;Qt::AltModifier){
QAction *selectedAction = menu.exec(event->globalPos());
if(selectedAction == act1)
{
//do something
}else if( selectedAction == act2 ){
//do something else
}
}
}
Комментарии:
1. Связано ли это с «mouseReleaseEvent». Я последовал вашему предложению, и это решило некоторые проблемы. Я использую это решение в QGraphicsScene и QGraphicsItem, и я не хочу выбирать элемент при отображении меню.