Como faço para auto-ajustar o tamanho de um QDialog dependendo do comprimento do texto de um dos seus filhos?
Pergunta
Eu tenho um QDialog
Eu estou trabalhando com. É feito um pouco como um QMessageBox
. Notei que o tamanho do QMessageBox
(e do tamanho do seu rótulo) depende do tamanho da mensagem exibida.
Como eu faria o tamanho da minha QDialog
ajustar automaticamente como um QMessageBox
? Presentemente minha QDialog
contém uma caixa de botão e um rótulo, ea QDialog
é Disposição vertical.
(Eu sei que eu poderia usar apenas a caixa de mensagem diretamente, mas, eventualmente, eu vou ter diálogos mais complexos.)
Solução
solução automática:
Use layouts e políticas de tamanho definido para QSizePolicy::Expanding
. Em QtDesigner, uma vez que todos os seus filhos são colocados em seu QDialog, em seguida, clique no Ajustar tamanho botão ao lado de layout queridos. Seu QDialog será redimensionada automaticamente em tempo de execução.
solução manual:
A classe QWidget
tem um método adjustSize
que redimensionar a QWidget para caber seu conteúdo. Basta chamá-lo quando todas as crianças estão definidos.
Outras dicas
Defina o seu diálogo com a expansão, e muito pequeno. Então, certifique-se de definir a sua mensagem antes de mostrar a janela. Quando mostrado, ele vai tentar encontrar seu tamanho adequado, com base no tamanho dos objetos que ele contém. (Isso acontece de forma recursiva, por isso, se o diálogo não é a controladora direta da etiqueta em que você mostra a sua mensagem, certifique-se tudo entre a etiqueta e o diálogo é definida para layouts de uso.)