У меня есть экземпляр QDialog, заполненный виджетами с использованием кода, сгенерированного uic. Диалоговое окно содержит несколько меток, расположенных вертикально, и я время от времени открываю диалоговое окно, чтобы показать текст в этих метках. Текст может быть многострочным и его длина заранее не определена. Я установил фиксированную политику вертикального размера, поэтому пользователь не может ее перетаскивать (не имеет смысла), но я также хочу, чтобы диалоговое окно изменяло свой размер перед отображением, чтобы соответствовать текущему размеру меток.
С этой целью я вызывал QWidget::adjustSize() в QDialog перед его отображением, но это не работает должным образом. Когда отображается диалоговое окно, кажется, что он сохраняет (неправильный) размер из предыдущего отображения, но когда я щелкаю мышью в (отключенном) режиме вертикального изменения размера, диалоговое окно внезапно «привязывается» к (правильному) настроенному размеру.
Есть ли способ заставить мой диалог отображаться правильно?
EDIT: я связал совет rubenvb и получил следующее:
QSizePolicy free(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QSizePolicy fixed(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
dialog->setSizePolicy(free);
dialog->adjustSize();
dialog->setSizePolicy(fixed);
dialog->show();
К сожалению, похоже, это ничего не изменило.