2012-06-08 4 views
1

내 프로젝트에는 QGraphicsViewQGraphicsScene이 있습니다. QGraphicsView 서브 클래 싱 했으므로 일부보기를 내보기에 추가해야합니다.QGraphicsView 하위 클래스 및 이벤트

mousePressEvent을 설정하면 끌기 모드 ScrollHandDrag을 무시합니다.

제 질문은 다음과 같습니다. mousePressEvent에 대한 응답 QGraphicsView과 사용자 정의 사례 (예 : 다른 사례를 구별하기 위해 m_click 사용) 사이를 전환하는 방법이 있습니까? 여기

내 코드입니다 : 내가 할 수있는 코드를 싶은 것이 기본적으로

MyQGraphicsView.h

class MyQGraphicsView : public QGraphicsView 
{ 
    Q_OBJECT 
    public: 
    MyQGraphicsView(QGraphicsScene *scene, QWidget *parent = 0); 

    public slots: 
    // void mousePressEvent(QMouseEvent * e); 

    private: 
    QGraphicsScene *m_scene; 
    int m_click; 
}; 

MyQGraphicsView.cpp

MyQGraphicsView::MyQGraphicsView(QGraphicsScene *scene, QWidget *parent) : 
    QGraphicsView(parent), 
    m_scene(scene), 
    m_click(0) 
{ 
    setScene(m_scene); 
} 

/*void MyQGraphicsView::mousePressEvent(QMouseEvent * e) 
{ 
    double rad = 1; 
    QPointF pt = mapToScene(e->pos()); 
    if (m_click) 
    { 
     m_scene->addEllipse(pt.x()-rad, pt.y()-rad, rad*2.0, rad*2.0, QPen(), QBrush(Qt::SolidPattern)); 
     m_click = 0; 
    } 
    else 
    { 
     m_click = 1; 
    } 
}*/ 

입니다 때 m_click=1 , 점을 그려라. 그러나 m_click=0ScrollHandDrag.

둘 다 별도로 작업 할 수 있지만 동시에 할 수는 없습니다.

답변

4
if (!m_click) { 
    QGraphicsView::mousePressEvent(e); 
} 

'정상'동작을 사용하려면 부모 클래스의 구현을 호출하기 만하면됩니다.

+0

대단히 감사합니다. 완벽하게 작동합니다. – Leo