【发布时间】:2012-04-02 12:11:39
【问题描述】:
我正在尝试在 Qt 中编写一个地图编辑器,将 QGraphicsView 和 QGraphicsScene 用于地图和瓦片表。
我现在遇到的问题是制作一个用于导入图块的好小部件。为此,我使用 QTabWidget(用于不同的 tile sheet),并使用 TileWidget 作为每个选项卡的小部件,其中包含 QGraphicsScene 和 QGraphicsView。
它在某种程度上可以工作,但并不是所有的图块(或 TileObjects,它们是 QGraphicsItem 的实现)都是可见的。我什至打电话给view->ensureVisible(scene->sceneRect()),但仍然不是所有的 QGraphicsScene 都不可见,即使有滚动条。
我知道这是由于限制了我的 QTabWidget 的最大大小,但这是必要的。
这主要发生在我导入更大的图块时。
我有一个TileWidget 作为QWidget 的QTabWidget,它同时具有QGraphicsScene 和QGraphicsView。
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 的其他代码。当我使用
void TileWidget::showEvent(QShowEvent *event)
{
view->fitInView(scene->itemsBoundingRect(), Qt::KeepAspectRatio);
}
我得到这样的东西。
较小的瓷砖可以使用,但较大的瓷砖不可以。我应该添加什么来保持图块大小正常,并使用滚动条导航 TileView?
没关系,想通了。只是我很笨。
【问题讨论】:
标签: c++ qt qgraphicsview qgraphicsscene