web-dev-qa-db-fra.com

Comprendre les mécanismes de présentation des formulaires dans Qt

Qt possède un mécanisme de mise en page flexible et puissant pour gérer la vue des fenêtres de l'application de bureau.

Mais il est si flexible qu'il est presque incompréhensible lorsque quelque chose se passe mal et nécessite un réglage fin. Et si puissant qu'il peut battre n'importe qui dans ses tentatives pour submerger l'opinion de Qt sur l'apparence de la forme.

Alors, quelqu'un peut-il expliquer ou fournir des articles ou la source des mécanismes de positionnement de Qt?

J'essaie de forcer les QLabel, QPushButton et QTableView, marqués par des traits de soulignement de fin dans leurs noms, deux fois plus élevés que QTextBrowser ayant verticalStretch = 1 au dessous de. Comment gérer correctement la hauteur du widget?

fichier .ui de mon formulaire sur google docs. Recherche '____' dans les noms, aperçu dans QtDesigner

58
Maxim Popravko

Les mises en page sont en fait faciles à comprendre "je pense" :)
Une explication simple des dispositions peut être trouvée dans le livre qt "Programmation C++ Gui avec QT 2nd edition "

Ce que vous devez savoir concernant les dispositions et leurs politiques de taille

  • La plupart des widgets Qt ont une politique de taille. Cette politique de taille indique au système comment le widget doit s'étirer ou se réduire. Il provient de la classe QSizePolicy. Une politique de taille a des composantes verticales et horizontales.
  • La plupart des widgets ont également un indice de taille. Cette indication de taille indique au système une taille préférée des widgets
  • QSizePolicy a un facteur d'étirement pour permettre aux widgets de croître à des taux différents

Je ne connais que les politiques de taille 4

  • politique de taille fixe - La taille du widget est fixe et ne peut pas être étirée. Il reste à son indice de taille.
  • politique de taille minimale - L'indice de taille est la plus petite taille possible du widget, mais il PEUT TOUJOURS s'agrandir si nécessaire.
  • Politique de taille préférée - le widget peut rétrécir ou devenir plus grand que son indice de taille.
  • élargir la politique de taille - le widget peut rétrécir ou devenir plus grand que son indice de taille :)

Vous voudrez peut-être demander,

Quelle est la différence entre préféré et en expansion?
réponse: Imaginez un formulaire avec 2 widgets, un avec préféré et un autre avec expansion, puis tout espace supplémentaire sera donné au widget avec la politique en expansion. Le widget avec la stratégie préférée restera à son indice de taille.

Je recommande (AVERTISSEMENT: je ne suis pas un expert :)) vous achetez et lisez "C++ Programmation GUI avec QT 2ème édition ". Je suis en train de le lire et ça fait beaucoup de sens. Regardez les images et voyez si elles ont un sens.

Explication des politiques de taille
Size policy explained

Un exemple simple
Ceci est une boîte de dialogue simple avec 2 boutons dont les politiques de taille horizontale et verticale sont affichées ainsi que l'étirement horizontal et vertical.

example

Voici l'aperçu dans sa plus petite taille.  alt text

Voici un autre aperçu à une plus grande taille  alt text

[MODIFIÉ: // exemple d'indice de taille ajouté]

POURQUOI DEVRIEZ-VOUS PRENDRE SOIN DE LA TAILLE
Vous pouvez voir que chaque widget a un sizeHint qui est vital car le système de mise en page de QT respecte toujours le sizeHint. Ce n'est un problème que si la taille par défaut du widget n'est pas exactement celle que vous souhaitez. Le seul moyen de contourner ce problème est d'étendre (sous-classe) le widget et de réimplémenter sa fonction membre sizeHint (). Un exemple vaut 1000 mots. Pour économiser de l'espace, consultez mon blog où il y a un exemple de projet.

116
Dr Deo