Code: Alles auswählen
class GraphWidget : public QGraphicsView
{
Q_OBJECT
public:
GraphWidget();
// ... usw
protected:
void resizeEvent(QResizeEvent *event);
void mouseMoveEvent ( QMouseEvent * event );
void mousePressEvent ( QMouseEvent * event );
void mouseReleaseEvent ( QMouseEvent * event );
void drawForeground ( QPainter * painter, const QRectF & rect );
Code: Alles auswählen
void GraphWidget::mouseReleaseEvent ( QMouseEvent * event )
{
std::cout<<"GraphWidget - mouseReleaseEvent = "<<event->pos().x()<<"; "<<event->pos().y()<<std::endl;
if(measureP1 == true)
measureP2 = true;
if(measure == false && measureP1 == true && measureP2 == true)
distance = calcDistance(PtScMouse1, PtScMouse2);
if(visibility == true) {
visibility = false;
drawVisArrow = false;
}
QGraphicsView::mouseReleaseEvent(event);
}und die Elemente dieser Scene sind dann abgeleitete GraphicsItems:
Code: Alles auswählen
class BFItem : public QGraphicsItem
{
public:
BFItem(Model *mod, double *zoom_verhaeltnis);
//...
protected:
void mousePressEvent ( QGraphicsSceneMouseEvent * event );
void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event );
void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
};
Code: Alles auswählen
void BFItem::mousePressEvent ( QGraphicsSceneMouseEvent * event )
{
std::cout<<"BFItem - mousePressEvent = "<<event->pos().x()<<"; "<<event->pos().y()<<std::endl;
mouseDown = event->scenePos();
mouseDown /= *pixels_per_inch;
update();
QGraphicsItem::mousePressEvent(event);
}Code: Alles auswählen
void GraphicsScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) {
// std::cout<<"Scene - mouseMoveEvent-event"<<std::endl;
mousePos = event->scenePos();
update();
QGraphicsScene::mouseMoveEvent(event);
}Die Events reichen nur bis zum GraphicsView und der Scene, alles was danach kommt ist irgendwie merkwürdig...