我正在使用opengl创建2D地图编辑器来绘制简单的32x32精灵,但似乎我无法将QGLWidget的大小调整为大尺寸(即尺寸*精灵大小->1024 * 32),使用1024似乎只能正常工作(使用glwidget->setMinimumSize(...))。 我已经在谷歌上搜索了一段时间了,我发现唯一有趣的事情是子类化 QAbstractScrollArea 并将我的 QGLWidget 设置为它的视口(这就是 QGraphicsView 所做的),我也看到了所有 Qt opengl 示例,但我找不到任何可以提供帮助的东西(除了图像查看器示例,这不是我想要的),我还尝试了以下内容: horizontalScrollBar()->setMaximum(width * 32);
verticalScrollBar()->setMaximum(height * 32);
在滚动区域上将小部件可调整大小设置为 true/false,但仍然没有任何内容。任何想法我会怎么做?如果你要求我,我可以显示更多的代码。
使用 Qt v4.7.3。
我有两个想法:
如果可能的话,放弃使用QGLWidget的想法,直接将精灵放置在图形场景中(QGraphicsPixmapItem)。可能不是你想要的,但图形场景是为了处理很多项目而设计的,所以你需要的大多数东西(例如在项目上触发鼠标事件)已经实现。
或者只是使用 QGraphicsWidget 将 QGLWidget 放置在图形场景中。这应该会自动告诉场景它的大小,然后告诉视图场景的大小。如果场景不适合视图,滚动条会自动显示。
更新:
如此链接中所述,您可以在任何图形视图中使用 OpenGL:
view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers)));
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate);