QGLWidget не получает вызовы resizeGL после инициализации - PullRequest
1 голос
/ 18 октября 2011

У меня возникла та же проблема, что и в этом (без ответа) вопросе: Qt resizeGL problem

Я тестирую новый QGLWidget для более крупного приложения.Метод resizeGL подключен для изменения glViewport и перерисовки представления OpenGL.Мой QGLWidget не является частью макета и просто создается следующим образом:

boost::shared_ptr<StandardCustomWidgetBuilder>
        builder(new StandardCustomWidgetBuilder());
WaterfallDirector<StandardCustomWidgetBuilder, DataSource> director(builder);
director.construct();
std::unique_ptr<CustomWidget> widget = builder->getWidget();
widget->show();

На моем компьютере по умолчанию создается окно 640x480 и при инициализации вызывается resizeGL.Всякий раз, когда я изменяю размер окна, resizeGL никогда не вызывается.

В своих попытках исправить это я пытался создать отдельный QWidget, в котором QVBoxLayout содержит только CustomWidget.Это создало очень маленькое окно, поэтому я исправил свои sizeHint и sizePolicy для CustomWidget, хотя это по-прежнему не влияло на вызов resizeGL.На данный момент я точно не знаю, как действовать.

Ответы [ 2 ]

1 голос
/ 18 октября 2011

Я решил мою проблему с помощью моего коллеги.Оказывается, я реализовал метод event и забыл вызвать внутри него метод QGLWidget::event.Виджет теперь корректно изменяет размеры.

0 голосов
/ 18 октября 2011

Если вы еще этого не сделали, я бы посоветовал проверить подсказки по размеру и политики размера всех соответствующих виджетов.

Например, следующее будет гарантировать, что ваш виджет используетдоступное пространство при увеличении размера окна:

widget->setSizePolcy( QSizePolicy::MinimumExpanding,
                      QSizePolicy::MinimumExpanding );

Я не думаю, что политика размера по умолчанию для QGLWidget заставляет его расширяться, поэтому я думаю, что вполне возможно, что это нужно изменить.

...