c++ - 查看整个 QGraphicsScene

标签 c++ qt qgraphicsview qgraphicsscene

我正在尝试在 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 的大小正常,并使用滚动条导航 TileView?

没关系,想通了。只是我太傻了。

最佳答案

你需要这样的东西:

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

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

相关文章:

c++ - 如何在两个类之间连接函数

c++ - 为什么没有 qRegisterMetaType q_enum 无法获得正确的类型值?

python - 在 QMainWindow 上显示的自定义 QGraphicsView 中的 PyQT 绘图

c++ - 如何 stub /模拟 const 函数

c++ - iOS 上的 Google Protocol Buffer

c++ - 使用 Qt 可视化(有向)图

qt - 在 Qt 中通过 Windows GDI 绘制

performance - 如何优化基于 QGraphicsView 的应用程序的性能?

c++ - 获取指向 union 中变量的指针

c++ - 检查音频缓冲区的声音