Q: Qt MousePressEvent
lexa - 30/Мар/2013 11:56
Я пока не очень опытный Qt хакер, поэтому спрошу.
(ну и аналогично с mouseReleaseEvent - проверить что отпустили нужную кнопку и фигануть симулированный эвент в базовый класс.
Вот есть 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();
}
}
};
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();
}
}
};
Вопрос: я что-то при этом сломаю?
Нет, я попробовал и вроде все работает, но вдруг я чего-то не заметил?