首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查看整个QGraphicsScene

查看整个QGraphicsScene
EN

Stack Overflow用户
提问于 2012-04-02 20:11:39
回答 1查看 3.2K关注 0票数 2

我正在尝试用Qt编写一个地图编辑器,使用QGraphicsView和QGraphicsScene来处理地图和图片表。

我现在遇到的问题是如何制作一个好的小部件来导入磁贴。为此,我使用了一个QTabWidget (用于不同的TileWidget ),并使用TileWidget作为每个选项卡的小部件,其中包含QGraphicsScene和QGraphicsView。

它工作得很粗糙,但并不是所有的tiles (或TileObjects,它们是QGraphicsItem的实现)都是可见的。我甚至调用了view->ensureVisible(scene->sceneRect()),但即使有滚动条,也不是所有的QGraphicsScene都是可见的。

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

这主要发生在我导入较大的平铺工作表时。

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

代码语言:javascript
复制
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,用于处理鼠标释放事件。

要添加磁贴,我只需调用scene->addItem()

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

代码语言:javascript
复制
void TileWidget::showEvent(QShowEvent *event)
{
    view->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio);
}

我得到了这样的东西。

它可以用于较小的瓷砖,但不适用于较大的瓷砖。我应该添加什么来保持磁贴的正常大小,并使用滚动条导航TileView?

算了,算出来了。只是我太傻了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-02 20:23:21

你需要这样的东西:

代码语言:javascript
复制
p_myGraphicsView->fitInView(
    myGraphicsView->scene()->itemsBoundingRect(),
    Qt::KeepAspectRatio);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9976178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档