Comment puis-je auto-ajuster la taille d'un QDialog en fonction de la longueur du texte de l'un de ses enfants?
J'ai un QDialog
je suis travailler avec. C'est 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 pourrais-je faire la taille de mon QDialog
ajuster automatiquement comme un QMessageBox
? Actuellement mon QDialog
contient un bouton de la boîte et l'étiquette, et le QDialog
est la mise en page Verticale.
(Je sais que je pourrais simplement utiliser la boîte de message directement, mais finalement, j'ai plus de complexe boîtes de dialogue.)
Vous devez vous connecter pour publier un commentaire.
Solution automatique:
Utiliser des mises en page et la taille de l'ensemble des politiques de
QSizePolicy::Expansion
. Dans QtDesigner, une fois que tous vos enfants sont placés sur votre QDialog, puis cliquez sur le Ajuster la Taille bouton à côté de disposition de ceux. Votre QDialog sera automatiquement redimensionnée à l'exécution.Solution manuelle:
La
QWidget
classe a une méthodeadjustSize
que redimensionner le QWidget pour s'adapter à son contenu. Juste de l'appeler quand tous les enfants sont ensemble.Configurer votre boîte de dialogue de l'expansion, et très petit. Ensuite, assurez-vous de définir votre message avant d'afficher la boîte de dialogue. Quand elle est affichée, il va essayer de trouver sa taille correcte, basée sur la taille des objets qu'il contient. (Ce qui arrive de manière récursive, donc si le dialogue n'est pas le parent direct de l'étiquette dans laquelle vous montrez votre message, assurez-vous que tout ce qui est entre l'étiquette et la boîte de dialogue à utiliser des mises en page.)