Comment puis-je auto-ajuster la taille d'un QDialog en fonction de la longueur du texte d'un de ses enfants?
Question
J'ai un QDialog
je travaille avec. Il est fait un peu comme un QMessageBox
. J'ai remarqué que la taille de la QMessageBox
(et la taille de son étiquette) dépend de la taille du message affiché.
Comment puis-je faire la taille de mon QDialog
ajuster automatiquement comme un QMessageBox
? Actuellement, mon QDialog
contient une boîte à boutons et une étiquette, et la mise en page est QDialog
verticale.
(je sais que je pourrais simplement utiliser la boîte de message directement, mais finalement, je vais avoir des dialogues plus complexes.)
La solution
Solution automatique:
Utiliser des modèles et des tailles définir des stratégies QSizePolicy::Expanding
. En QtDesigner, une fois que tous vos enfants sont placés sur votre QDialog, puis cliquez sur le bouton Ajuster la taille bouton de mise en page les suivant. Votre QDialog sera automatiquement redimensionnée lors de l'exécution.
solution manuelle:
La classe QWidget
a une méthode adjustSize
redimensionner la QWidget pour adapter son contenu. Il suffit d'appeler quand tous les enfants sont fixés.
Autres conseils
Définissez votre boîte de dialogue pour être en expansion, et très faible. Ensuite, assurez-vous de mettre votre message avant d'afficher la boîte de dialogue. Lorsqu'on lui a montré, il va essayer de trouver sa taille appropriée, en fonction de la taille des objets qu'il contient. (Cela se produit récursive, donc si la boîte de dialogue n'est pas le parent direct de l'étiquette dans laquelle vous montrez votre message, assurez-vous que tout entre l'étiquette et la boîte de dialogue est configuré pour utiliser mises en page.)