2012-06-03 5 views
1

Я создаю 2D-редактор карт, используя opengl, чтобы рисовать простые спрайты 32x32, но кажется, что я не могу изменить размер моего QGLWidget до большого размера (т. Е. Размер * спрайта размером -> 1024 * 32), использование 1024 только работает нормально (с помощью glwidget-> setMinimumSize (...)). Некоторое время назад я занимался поиском в Google, единственная интересная вещь, которую я обнаружил, - это подкласс QAbstractScrollArea и установка моего QGLWidget как своего вида (это то, что делает QGraphicsView), я также видел все примеры Qt opengl, но я не мог найти ничего, что (кроме примера Image Viewer, который не совсем то, что я хочу), я также пробовал следующее: horizontalScrollBar()->setMaximum(width * 32); verticalScrollBar()->setMaximum(height * 32); с изменяемым размером виджета, установленным в true/false на scrollarea, но все равно ничего. Любые идеи, как я могу это сделать? Я могу показать больше кода, если вы попросите меня.изменение размера QGLWidget для соответствия каждому размеру спрайта

Использование Qt v4.7.3.

ответ

0

У меня есть две идеи:

Если это возможно, отказаться от идеи использования QGLWidget и поместить спрайты непосредственно в графической сцены (QGraphicsPixmapItem). Возможно, это не то, что вы хотите, но графическая сцена предназначена для обработки множества элементов, поэтому большинство вещей, которые вам нужны (например, запуск событий мыши на элементах, например), уже реализованы.

Или просто поместите QGLWidget в графическую сцену с помощью QGraphicsWidget. Это должно автоматически указывать размер сцены, который затем указывает размер сцены. Полосы прокрутки появляются автоматически, если сцена не вписывается в представление.

Update:

Как описано в this link, вы можете использовать OpenGL в любом графическом представлении:

view.setViewport(new QGLWidget(QGLFormat(QGL::SampleBuffers))); 
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdate); 
+0

спасибо за попытку помочь, но это не то, что мне нужно, я использую этот путь до и это не пошло по мере необходимости. Я столкнулся с проблемой производительности с QGraphicsView, низким FPS (около 20?) –

+0

Вы пытались настроить графическое представление на использование OpenGL? Оформить заказ: http://doc.qt.nokia.com/qq/qq26-openglcanvas.html#turbocharginggraphicsview – leemes

+0

Я мог бы попробовать, что вопрос, не так ли, приведет к тому же, что случилось в прошлый раз, когда я использовал QGraphicsView? (низкий FPS и т. д.?) –