2010-08-31 7 views
9

Je veux placer des widgets dans un widget parent à certains endroits aléatoires, comme un bouton sur Point (10,10) et un autre sur (15,40), etc. Comment y parvenir QGridLayout pousse tout dans le style de colonne de ligne. Mais je veux mettre les widgets où je veux, quelqu'un peut-il m'aider?qt - widget - positionnement

Répondre

19

Si vous vraiment voulez définir des positions absolues, je voudrais ignorer l'utilisation d'une mise en page tous ensemble. Vous pouvez définir manuellement la position des éléments en utilisant la fonction move ou la fonction setGeometry .

QWidget *parent = new QWidget(); 
parent->resize(400, 400); 

QPushButton *buttonA = new QPushButton(parent); 
buttonA->setText("First Button"); 
buttonA->move(10, 10); 

QPushButton *buttonB = new QPushButton(parent); 
buttonB->setText("Second Button"); 
buttonB->move(15, 40); 

Side note: J'éviter de fixer des positions absolues des éléments dans Qt. Pourquoi? Eh bien, Qt essaie d'être une bibliothèque GUI indépendante de la plate-forme. Sur différentes plates-formes, de nombreux éléments d'affichage peuvent changer (c'est-à-dire la taille du texte dans les boutons-poussoirs), de sorte que la taille de vos boutons-poussoirs peut varier pour s'adapter à des tailles de police plus grandes ou plus petites. Cela peut se débarrasser de vos boutons poussoirs méticuleusement espacés, vous utilisez des positions absolues comme dans l'exemple ci-dessus.

Si vous utilisez des mises en page, vous pouvez éviter les boutons qui se chevauchent ou les boutons qui tombent du bord de votre fenêtre.

+0

Merci l'homme, cela fonctionne – prabhakaran

3

Vous pouvez voir ma réponse pour le bouton de superposition dans QT: Qt Widget Overlays. Cela peut vous aider à réaliser ce que vous voulez.

+0

+1, a ajouté un commentaire il y a comment. aligner à droite les widgets manuellement. –