gpt4 book ai didi

c++ - 查看整个 QGraphicsScene

转载 作者:搜寻专家 更新时间:2023-10-31 01:54:14 32 4
gpt4 key购买 nike

我正在尝试在 Qt 中编写一个 map 编辑器,对 map 和图 block 表使用 QGraphicsView 和 QGraphicsScene。

我现在遇到的问题是制作一个用于导入图 block 的良好小部件。为此,我使用 QTabWidget(用于不同的图 block 表)和 TileWidget 作为每个选项卡的小部件,其中包含 QGraphicsScene 和 QGraphicsView。

它在粗略的程度上起作用,但并不是所有的图 block (或 TileObjects,它们是 QGraphicsItem 的实现)都是可见的。我什至调用了 view->ensureVisible(scene->sceneRect()),但仍然不是所有的 QGraphicsScene 都不可见,即使有滚动条也是如此。

我知道这是因为限制了我的 QTabWidget 的最大尺寸,但这是必要的。

这主要发生在我导入较大的图 block 表时。

我有一个 TileWidget 作为 QTabWidgetQWidget,它同时具有 QGraphicsSceneQGraphicsView

TileWidget::TileWidget(QWidget *parent)
: QWidget(parent)
{
scene = new QGraphicsScene;
view = new TileView(scene, this);

connect(view, SIGNAL(newBrushSelected(TileObject *b)), this, SLOT(selectNewBrush(TileObject *b)));
}

TileView 只是一个重新实现的 QGraphicsView 来处理鼠标释放事件。

要添加图 block ,我只需调用 scene->addItem()

TileView 没有其他代码。当我使用

void TileWidget::showEvent(QShowEvent *event)
{
view->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio);
}

我得到了这样的东西。

enter image description here

对于较小的图 block 表没问题,但对于较大的图 block 表则不行。我应该添加什么来保持图 block 的正常大小,并使用滚动条在 TileView 中导航?

没关系,想通了。就是我太蠢了。

最佳答案

你需要这样的东西:

p_myGraphicsView->fitInView(
myGraphicsView->scene()->itemsBoundingRect(),
Qt::KeepAspectRatio);

关于c++ - 查看整个 QGraphicsScene,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9976178/

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