У меня есть QGLWidget, который я хочу изменить до заданного разрешения (больше, чем содержащее окно). Мое намерение состоит в том, что окно расширяется до тех пор, пока виджет не войдет внутрь, но не сможет найти способ сделать это.Изменить размер окна
Я попробовал несколько команд после изменения размера QGLWidget, чтобы он работал без успеха. Перечислите результаты здесь:
- ничего не делать: виджет перекрывает все окно. В конце концов, он будет изменен, чтобы соответствовать обратно в окно меньшего размера
mainWindow.adjustSize()
: Виджет получает изменен на (0, 0)mainWindow.resize(mainWindow.sizeHint())
: смотри вышеmainWindow.resize(mainWindow.minimumSizeHint())
: смотри выше
Я также прочитал в this thread, что перед изменением размера mainWindow я должен запустить цикл событий, чтобы пересчитать новые размеры, поэтому я вставил QCoreApplication::processEvents
, чтобы сделать это без видимого эффекта.
Как изменить размер окна через виджет?
Редактировать
GLWidget не только виджет окна. Он встроен в сплиттер вместе с групповым ящиком.
Хотя это действительно изменяет размер окна для нужного размера он предотвращает от дальнейшего изменения размера пользователя. Из документации: 'Устанавливает как минимальный, так и максимальный размер виджета на s, тем самым не позволяя ему когда-либо увеличиваться или сокращаться.' Я просто попытался сохранить и восстановить старые минимальные и максимальные размеры, но это не приводит к изменениям вообще , – Nobody
Вместо 'setFixedSize()', попробуйте 'setMinimumSize()' и используйте 'setSizePolicy()'. У вас действительно есть большой контроль над тем, как вещи расширяются и реагируют с помощью 'setSizePolicy()'. 'setFixedSize()' делает кучу вещей сразу, поэтому, вероятно, это не то, что вы хотите в этом случае. – phyatt
'minimumSize' кажется, также неправильная вещь для меня. Пользователь должен иметь возможность изменять размер произвольно. Мне просто нужно, чтобы окно появилось до размера, соответствующего размеру запроса 'QGLWidget'. – Nobody