Q: Qt MousePressEvent

Я пока не очень опытный Qt хакер, поэтому спрошу.

Вот есть QGraphicsView, у которого есть стандартная функциональность - можно по нажатию левой кнопки мыши скроллить это самое View (setDragMode(QGraphicsView::ScrollHandDrag)).

А теперь, допустим, я хочу делать то же самое не по левой кнопке, а еще по какой-то, скажем по Shift+правая кнопка.

Могу ли я сделать так:

class myView: public QGraphicsView {
  void mousePressEvent(QMouseEvent *e) {
      if(e->button() == Qt::RightButton && (e->modifiers() & Qt::ShiftModifier)) {
        QMouseEvent simulatedDrag(e->type(),e->pos(),e->globalPos(),Qt::LeftButton,
                                 Qt::LeftButton,Qt::NoModifier);
        QGraphicsView::mousePressEvent(&simulatedDrag);
        e->accept();
       }      
   }
};
(ну и аналогично с mouseReleaseEvent - проверить что отпустили нужную кнопку и фигануть симулированный эвент в базовый класс.

Вопрос: я что-то при этом сломаю?

Нет, я попробовал и вроде все работает, но вдруг я чего-то не заметил?

Add new comment