У меня есть класс View, который переопределён из класса QGraphicsView.
Я пытаюсь нарисовать линию, если щелкнуть правой кнопкой мыши.
Вот мои коды мышиPressEvent, mouseReleaseEvent и mouseMoveEvent:
<code>
View::View(QWidget *parent) : QGraphicsView(parent)
{
setAcceptDrops(true);
setDragMode(QGraphicsView::RubberBandDrag);
posFirst = QPoint(0,0);
setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
pressed = false;
area = new Area;
setScene(area);
selectionLine = new QGraphicsLineItem(0,0,0,0,0,area);
selectionLine->setPen(QPen(Qt::DashLine));
}</p>
<p>void View::mousePressEvent(QMouseEvent *event){
if(event->button() == Qt::RightButton ){
posFirst.setX( event->pos().x() );
posFirst.setY( event->pos().y() );
pressed = true;
selectionLine->setVisible(true);
}
QGraphicsView::mousePressEvent(event);
}</p>
<p>void View::mouseReleaseEvent(QMouseEvent *event){
update();
pressed = false;
selectionLine->setVisible(false);
event->accept();
selectionLine->setLine(0,0,0,0);
QGraphicsView::mouseReleaseEvent(event);
}</p>
<p>void View::mouseMoveEvent(QMouseEvent *event){
if(pressed ){
selectionLine->setLine(posFirst.x() , posFirst.y() , event->pos().x() , event->pos().y() );
}
QGraphicsView::mouseMoveEvent(event);
}</p>
<p>
Но этот код не работает должным образом. Он не улавливает события обращения мыши и перемещения мыши должным образом.
Если я установлю if (event-> button () == Qt :: LeftButton), тогда он будет работать как положено.
Также я попробовал с Qt :: MidButton, и это сработало.
В чем проблема с RightButton?