1

我正在使用opengl创建2D地图编辑器来绘制简单的32x32精灵,但似乎我无法将我的QGLWidget调整为大尺寸(即尺寸*精灵尺寸-> 1024 * 32),仅使用1024似乎工作正常(使用glwidget ->setMinimumSize(...))。我已经在谷歌上搜索了一段时间,我发现唯一有趣的事情是将 QAbstractScrollArea 子类化并将我的 QGLWidget 设置为它的视口(这就是 QGraphicsView 所做的),我也看到了所有 Qt opengl 示例,但我找不到任何可以帮助(除了不是我想要的图像查看器示例),我还尝试了以下操作: horizontalScrollBar()->setMaximum(width * 32); verticalScrollBar()->setMaximum(height * 32); 在滚动区域上将可调整大小的小部件设置为真/假,但仍然没有。有什么想法我会怎么做?如果您要求我,我可以显示更多代码。

使用 Qt v4.7.3。

4

1 回答 1

0

我有两个想法:

如果可能的话,放弃使用 QGLWidget 的想法并将精灵直接放置在图形场景中(QGraphicsPixmapItem)。可能不是你想要的,但是图形场景是用来处理很多项目的,所以你需要的大多数东西(例如在项目上触发鼠标事件)已经实现了。

或者只是使用 QGraphicsWidget 将 QGLWidget 放置在图形场景中。这应该自动告诉场景它的大小,然后告诉视图场景的大小。如果场景不适合视图,滚动条会自动出现。

更新:

如此链接中所述,您可以在任何图形视图中使用 OpenGL:

view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
于 2012-06-03T21:45:35.317 回答