Как мне автоматически настроить размер QDialog в зависимости от длины текста одного из его дочерних элементов?
Вопрос
У меня есть QDialog
Я работаю с.Он сделан в некотором роде как QMessageBox
.Я заметил, что размер QMessageBox
(и размер его метки) зависит от размера отображаемого сообщения.
Как бы я определил размер своего QDialog
настраивается автоматически, как QMessageBox
?В настоящее время мой QDialog
содержит поле для кнопок и метку, а также QDialog
это вертикальная компоновка.
(Я знаю, что мог бы просто использовать окно сообщения напрямую, но в конечном итоге у меня появятся более сложные диалоги.)
Решение
Автоматическое решение:
Используйте макеты и устанавливайте политики размеров, чтобы QSizePolicy::Expanding
.В QtDesigner, как только все ваши дочерние элементы будут размещены в вашем QDialog, нажмите на Отрегулируйте Размер нажмите кнопку "следующий макет".Размер вашего QDialog будет автоматически изменен во время выполнения.
Ручное решение:
Тот самый QWidget
класс имеет метод adjustSize
это изменяет размер QWidget в соответствии с его содержимым.Просто вызовите его, когда все дочерние элементы будут установлены.
Другие советы
Сделайте ваш диалог расширяющимся и очень маленьким.Затем обязательно укажите свое сообщение перед отображением диалогового окна.При отображении он попытается найти правильный размер в зависимости от размера содержащихся в нем объектов.(Это происходит рекурсивно, поэтому, если диалоговое окно не является прямым родительским элементом метки, в которой вы показываете свое сообщение, убедитесь, что все между меткой и диалоговым окном настроено на использование макетов.)