Почему размер моего qt CentralWidget (QGLWidget) не изменяется должным образом?

У меня есть приложение с QMainWindow, в котором в идеале должен быть центр QGLWidget, с оставленными снаружи пробелами для панелей инструментов и других виджетов сверху/сбоку.

К сожалению, независимо от размера или геометрии QGLWidget, он кажется огромным и занимает все главное окно!

В основном, установка такова: CreateWindow() вызывается в main(), которая создает главное окно, и вызывает функцию Init(), которая создает GLWidget. Итак, в Init(), который является членом моего адаптированного класса главного окна, у меня, по сути, есть:

GLScene = new MyQGLWidget(this);  
setCentralWidget(GLScene); 

Теперь, чтобы заставить GLScene соответствовать желаемому размеру и положению, я сначала попытался установить его геометрию в конструкторе GLWidget (он же мой класс, производный непосредственно от GLWidget):

MyQGLWidget::MyQGLWidget(QWidget* parent){
    ....
    setGeometry(210, 40, 600, 400);  //the main window is of course bigger and should fit this nicely 
    ....
}

Это, однако, совсем не сработало и по-прежнему занимало все главное окно. Вместо этого я попытался поместить вызов setGeometry в Init(). Я пробовал это как прямо перед, так и сразу после setCentralWidget(); ни один вариант не сработал. Также не было полностью удалено вызов setCentralWidget (фактически это привело к исчезновению GLWidget).

Поскольку это явно не работает должным образом, как правильно масштабировать GLWidget? Или это просто вопрос порядка вещей, который мне нужно изучить более глубоко?


person norman    schedule 27.08.2012    source источник
comment
Пробовали ли вы поиграться с minimumSize()/maximumSize(), чтобы проверить, сможете ли вы вообще им управлять?   -  person ChiefTwoPencils    schedule 28.08.2012


Ответы (1)


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

person Gustavo Litovsky    schedule 28.08.2012
comment
Интересно, что мне не нужно было добавлять макет для старого кода с виджетами q3. Спасибо за помощь! - person norman; 28.08.2012