사용 QGraphicsScene::setSceneRect()
: 당신이 수직 축이 잘못 반전되고 염려되는 경우
scene->setSceneRect(-180, -90, 360, 180);
,이 처리하는 방법에 대한 몇 가지 옵션이 있습니다. 한 가지 방법은 y 좌표를 포함하는 계산을 할 때마다 -1을 단순히 곱하는 것입니다. 또 다른 방법은 view->scale(1, -1)
을 사용하여 QGraphicsView를 수직으로 뒤집어 장면이 올바르게 표시되도록하는 것입니다.
다음은 후자의 기술을 사용하는 작업 예제입니다. 예를 들어, QGraphicsScene을 서브 클래 싱하여 뷰를 클릭하면 사용자 정의 장면에 qDebug()
을 사용하여 클릭 위치가 표시됩니다. 실제로 QGraphicsScene을 서브 클래 싱 할 필요는 없습니다.
#include <QtGui>
class CustomScene : public QGraphicsScene
{
protected:
void mousePressEvent(QGraphicsSceneMouseEvent *event)
{
qDebug() << event->scenePos();
}
};
class MainWindow : public QMainWindow
{
public:
MainWindow()
{
QGraphicsScene *scene = new CustomScene;
QGraphicsView *view = new QGraphicsView(this);
scene->setSceneRect(-180, -90, 360, 180);
view->setScene(scene);
view->scale(1, -1);
setCentralWidget(view);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
우수. 한 가지 질문 : 왜 360입니까? – QLands
@QLands 360은 오른쪽 좌표가 아닌 너비입니다. -180에서 180까지 이동하려면 폭은 360입니다. – Anthony
예, 대개 점 x, 점 y, 크기 x 및 크기 y를 사용합니다. – Lefsler