使用QGraphicsScene::setSceneRect()
そうのような:
scene->setSceneRect(-180, -90, 360, 180);
あなたは間違って裏返しされている垂直軸を懸念している場合は、これに対処する方法についていくつかのオプションがあります。 1つの方法は、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