gpt4 book ai didi

qt - 如何将QGraphicsScene/View设置为特定的坐标系

转载 作者:行者123 更新时间:2023-12-03 12:16:00 25 4
gpt4 key购买 nike

我想在QGraphicsScene中绘制多边形,但是该多边形具有纬度/经度位置。在等角投影中,坐标来自:

                       ^
90
|
|
-180----------------------------------->180
|
|
-90

如何将 QGraphicsScene / QGraphicsView设置为此类投影?

非常感谢,

卡洛斯

最佳答案

像这样使用QGraphicsScene::setSceneRect():

scene->setSceneRect(-180, -90, 360, 180);

如果您担心垂直轴被错误地翻转,则可以使用几种方法来处理。一种方法是,只要您进行涉及y坐标的任何计算,就简单地乘以-1。另一种方法是使用 view->scale(1, -1)垂直翻转QGraphicsView,以便正确显示场景。

下面是一个使用后一种技术的工作示例。在示例中,我将QGraphicsScene子类化,以便您可以在 View 中单击,并且自定义场景将使用 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();
}

关于qt - 如何将QGraphicsScene/View设置为特定的坐标系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10443894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com