使用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