Не делайте этого в paintEvent
, а вместо этого void QWidget::resizeEvent ( QResizeEvent * event )
.Затем вы можете сравнить event->size()
и event->oldsize()
, чтобы увидеть, какое измерение было изменено, а затем изменить размер, чтобы сопоставить другое измерение с измененным.
EDIT: обратите внимание, что при изменении размера окна внутри функции resizeEvent вы создадите еще одно событие изменения размера.Поэтому убедитесь, что вы изменяете размер только в том случае, если произошли изменения, приведшие окно к неправильному соотношению сторон, в противном случае вы создадите бесконечную рекурсию функции и переполнение стека.