Как мне автоматически настроить размер QDialog в зависимости от длины текста одного из его дочерних элементов?

StackOverflow https://stackoverflow.com/questions/1675499

  •  16-09-2019
  •  | 
  •  

Вопрос

У меня есть QDialog Я работаю с.Он сделан в некотором роде как QMessageBox.Я заметил, что размер QMessageBox (и размер его метки) зависит от размера отображаемого сообщения.

Как бы я определил размер своего QDialog настраивается автоматически, как QMessageBox?В настоящее время мой QDialog содержит поле для кнопок и метку, а также QDialog это вертикальная компоновка.

(Я знаю, что мог бы просто использовать окно сообщения напрямую, но в конечном итоге у меня появятся более сложные диалоги.)

Это было полезно?

Решение

Автоматическое решение:

Используйте макеты и устанавливайте политики размеров, чтобы QSizePolicy::Expanding.В QtDesigner, как только все ваши дочерние элементы будут размещены в вашем QDialog, нажмите на Отрегулируйте Размер нажмите кнопку "следующий макет".Размер вашего QDialog будет автоматически изменен во время выполнения.

Ручное решение:

Тот самый QWidget класс имеет метод adjustSize это изменяет размер QWidget в соответствии с его содержимым.Просто вызовите его, когда все дочерние элементы будут установлены.

Другие советы

Сделайте ваш диалог расширяющимся и очень маленьким.Затем обязательно укажите свое сообщение перед отображением диалогового окна.При отображении он попытается найти правильный размер в зависимости от размера содержащихся в нем объектов.(Это происходит рекурсивно, поэтому, если диалоговое окно не является прямым родительским элементом метки, в которой вы показываете свое сообщение, убедитесь, что все между меткой и диалоговым окном настроено на использование макетов.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top