使用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();
}
优秀。只有一个问题:为什么选择360? – QLands
@QLands 360是宽度,而不是正确的坐标。从-180到180,宽度是360. – Anthony
是的,通常他们做点x,点y,尺寸x和尺寸y – Lefsler