Comment puis-je auto-ajuster la taille d'un QDialog en fonction de la longueur du texte d'un de ses enfants?

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

  •  16-09-2019
  •  | 
  •  

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.)

Était-ce utile?

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.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top