2017-04-03 1 views
0

J'ai beaucoup de mal à comprendre comment fonctionne QLayouts. Fondamentalement, je démarre un projet MainWindow, puis j'ajoute un nouveau formulaire basé sur QWidget dans lequel je place QLineEdits et QLabels dans une disposition horizontale pour l'utiliser comme un éditeur d'entrée quadrichromie. Tout semble bien dans l'aperçu.Qt Layouts dans QCreator

Ensuite, j'ajoute un QWidget à ma classe MainWindow, et je le promets à ma classe DottedQuadEdit. Cela semble OK si ce n'est pas dans une mise en page, mais une fois ajouté à une mise en page, il se réduit à la taille zéro. J'ai tout bidouillé avec toutes les politiques de tailles différentes, les paramètres de taille, les configurations de mise en page, le tout sans succès. La classe promue est correcte jusqu'à ce qu'elle atterrisse dans une mise en page, puis est écrasée jusqu'à l'invisibilité lorsqu'elle est ajoutée à une mise en page.

J'ai exploré de nombreux tutoriels, ainsi que la documentation de Qt, mais je n'ai pas trouvé d'explication décente sur la façon dont les agencements fonctionnent réellement.

+0

J'ai écrit le tutoriel de mise en page sur StackOverflow. vous pouvez les voir ici: https://stackoverflow.com/documentation/qt/9380/about-using-layouts-widget-parenting#t=201704031930582621633. Peut-être pourriez-vous nous donner plus de code sur ce que vous avez fait et nous pouvons en parler. Si vous avez des problèmes avec mes tutoriels, vous pouvez aussi me poser des questions. –

Répondre

0

Comme Gabriel l'a mentionné, montrer votre code vous aidera. Ma conjecture est que votre QWidget n'a pas de taille minimum définie dans Qt Creator, ce qui signifie qu'il peut légitimement se réduire à une taille nulle. Les paramètres de taille minimum font partie des attributs que vous pouvez modifier pour chaque QWidget; expérimenter avec ceux pour lui donner une taille qui a du sens. Ensuite, vous pouvez également jouer avec si cette taille est minimale, préférée, en expansion, et ainsi de suite.

Lorsque vous le placez indépendamment (pas dans une mise en page), il conserve la taille que vous lui avez attribuée lorsque vous l'avez déplacé. Une fois que vous l'avez placée dans une mise en page, la mise en page gère sa taille et, sans le moindre, la mise en page est libre de la redimensionner complètement.

0

Avez-vous défini la disposition du formulaire basé sur QWidget dans lequel vous avez ajouté QLineEdits et QLabels? Vous devez également spécifier la disposition du formulaire.