Je pensais que la mise en page est juste un widget qui maintient plus de widgets à l'intérieur. Mais maintenant, je trouve que je ne peux pas l'ajouter à d'autres widgets à l'aide de Addwidget. Par exemple, comment ajouter une mise en page à QSplitter? P>
3 Réponses :
Non, une mise en page n'est pas un widget ni un conteneur. Une mise en page ressemble davantage à une "assistante" qui est attachée à une fenêtre et de chiffrer le meilleur endroit pour mettre chaque widget.
Cet exemple des documents QT devrait aider ( http://qt.nokia.com/doc/4.2/layout.html ): p>
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new QPushButton("Two"); QPushButton *button3 = new QPushButton("Three"); QPushButton *button4 = new QPushButton("Four"); QPushButton *button5 = new QPushButton("Five"); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(button3); layout->addWidget(button4); layout->addWidget(button5); window->setLayout(layout); window->show();
Layouts est un moyen élégant et flexible d'organiser automatiquement des widgets enfants dans leur conteneur. Chaque widget rapporte ses exigences de taille à la disposition dans les propriétés TIZEHINT et SIZEPOLICY, et la mise en page distribue l'espace disponible en conséquence. P>
blockQuote>
Par exemple, régler la mise en page d'un widget sur Vous pouvez en savoir plus sur ici . P> qlayout code> s sont des gestionnaires de la présentation. Ils gèrent le positionnement et le redimensionnement des widgets à l'intérieur d'un widget parent. Du Docs: P>
qhboxlayout code> entraînera la mise en place de ses widgets d'enfant horizontalement. P>
Qwidget a pris en charge la prise en charge des présentations via le Mais, certains widgets ressemblent davantage à un gestionnaire de mise en page qu'un widget, tel que qsplitter a > et Qtabwidget . Considérez, par exemple, QSplitter. Bien qu'un seul widget, il présente deux domaines différents pouvant être collaborés. Dans ce cas, un seul gestionnaire de mise en page pour deux domaines différents n'a pas vraiment de sens. Comme QSplitter, Qtabwidget a des comportements qui font une seule disposition non seulement inutile mais pas utile. P>
Je pense que c'est la fusion ci-dessus de la mise en page et du widget qui rend la séparation de la mise en page et du widget déroutant parfois. P> mise en page () code>
et setlayout (...) code>
fonctions. L'objet de mise en page contrôle le positionnement de différents widgets d'enfants pouvant être ajoutés à la disposition. En outre, il veille à former correctement son widget parent basé sur le contraintes a > spécifié. Si la mise en page n'a pas encore de widget parent, alors dès que la mise en page est attachée à un widget avec setlayout () code>, il définira la taille de ce widget parent. P>
Si vous utilisez la langue du modèle de conception du contrôleur de modèles-View-contrôleur. Est-il correct de dire que la "mise en page" est le contrôleur? Ou pouvez-vous ne pas le relier au modèle de conception "modèle-View-contrôleur"?
Question ancienne, mais non, la mise en page fait partie de la vue dans un modèle de conception MVC. Le but est de découpler le (s) modèle (s), vue (s) et contrôleur (s). Il est tout à fait possible de changer la mise en page sans aucune modification du modèle ou du contrôleur (imaginez la modification d'une liste d'éléments d'une disposition horizontale à une disposition verticale, par exemple). La vue, cependant, changerait nécessairement. La mise en page fait partie de la vue.