centerOn()을 사용하여 뷰포트를 항목 (또는 포트 주변의 항목)으로 이동하는 방법을 알 수 없습니다.QGraphicsView-> centerOn()이 작동하지 않습니다.
다음 코드는 메인에서 작업을 수행합니다
class MyView :: public QGraphicsView { ... }
void MyView::init(){
...
setDragMode(QGraphicsView::ScrollHandDrag);
setFrameStyle(QFrame::NoFrame);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
_scene.clear();
setScene(&_scene);
super::showNormal();
}
void MyView::paintEvent(QPaintEvent *aEvent){
_scene.clear();
QGraphicsPixmapItem *pmItem = new QGraphicsPixmapItem(pixMap);
_scene.addItem(pmItem);
centerOn(QPointF(50.0, 30.0));
super::paintEvent(aEvent);
}
:
view.setDragMode(QGraphicsView::ScrollHandDrag);
view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view.setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
view.setFrameStyle(QFrame::NoFrame);
view.showFullScreen();
QGraphicsPixmapItem *pmItem = new QGraphicsPixmapItem(pixMap);
scene.addItem(pmItem);
view.centerOn(QPointF(50,30));
view.show();
rc = qA.exec();
을하지만, centerOn는() 오버로드를 QGraphicsView의 나는 paintEvent (에서 동일한 작업을 수행하려고 아무것도)하지 않습니다
무엇이 놓칠까요? 당신은 기본적으로 paintEvent 통화에서 양탄자를 당겨 당신
알렉스
paintEvent 대신 drawForeground 함수를 다시 구현하십시오. 그것은보기에 사물을 엉망이게하는 일반적인 방법입니다. 나는 paintEvent가 실행될 때 뷰가 그려지지 않는다고 추측하고 있습니다. 왜냐하면 좌표 30.0과 50.0이 유효한 것들이 아닙니다. – Castilho
일찍 응답하지 않아 죄송합니다. 오늘 밤 이것을 확인하고 알려 드리겠습니다. 고맙습니다. – Alex