gpt4 book ai didi

c++ - Qt,C++ : QGraphicsScene coordinates are not working

转载 作者:行者123 更新时间:2023-11-28 01:40:53 26 4
gpt4 key购买 nike

我检查了很多解决方案,但找不到适合我的解决方案。

我的应用程序中有 QGraphicsScene 和 QGraphicsView:

MyWindow::MyWindow()
{
space = new QGraphicsScene(this);
spaceView = new QGraphicsView(space);
spaceView ->setAlignment(Qt::AlignTop|Qt::AlignLeft);
}

我也有按钮,运行函数:

void MyWindow::addWidget()
{
myWidget *w1= new myWidget(space);
space->addItem(w1);

myWidget *w2 = new myWidget(space);
w2->setPos(10,10);
space ->addItem(w2);
}

它添加了两个对象,但第二个应该在不同的坐标上(移动了(10,10))。当我不使用时:

spaceView ->setAlignment(Qt::AlignTop|Qt::AlignLeft);

移动有效,但所有项目都在我的视野中心 - 我不想让它居中。我需要它从左上角定位。使用我上面显示的更改位置的“setAligment”代码后,什么都不做。两个对象在同一个地方。有人能告诉我如何从左上角定位并让它四处移动吗?

我不想使用:

space->setSceneRect(i.e. 0,0,1000,1000,Qt::);

因为我不想将我的场景限制在右侧。我也尝试使用:

spaceView->fitInView();

但这也没有帮助。

最佳答案

您可以使用函数获取场景的位置和绑定(bind):

QGraphicsItem::sceneBoundingRect()
QGraphicsItem::scenePos()

所有项目首先添加到 (0,0) 位置,然后转换到正确的位置。您可以使用 GraphicsView 坐标系并使用从 View 到场景的坐标映射。为此,请使用:

QGraphicsView::mapToScene()
QGraphicsItem::mapToScene()

QGraphicsView::mapFromScene()

获取场景位置

关于c++ - Qt,C++ : QGraphicsScene coordinates are not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47230207/

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