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

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

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

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

2 ответа

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

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

Решение вручную:

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


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

licensed under cc by-sa 3.0 with attribution.