QGraphicsScene::setSceneRect()
像这样使用:
scene->setSceneRect(-180, -90, 360, 180);
如果您担心垂直轴被错误地翻转,您有几个选择来处理这个问题。一种方法是在进行任何涉及 y 坐标的计算时简单地乘以 -1。另一种方法是垂直翻转 QGraphicsView,使用view->scale(1, -1)
以便正确显示场景。
下面是一个使用后一种技术的工作示例。在示例中,我对 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();
}