2009-11-18 7 views
2

dans qdesigner_workbench.cpp, comment puis-je ajouter un widget (par exemple QLabel) dans un FormWindow par code? Puisque les méthodes comme createWidget() ... etc sont toutes abstraites, comment puis-je utiliser correctement la mécanique interne pour ajouter QLabel dans la fenêtre active FormWindow?comment ajouter un widget dans le formulaire Dans QtDesigner

EDIT:

En qdesigner_workbench.cpp, c'est actuellement ce que j'ai:

QDesignerFormWindowManagerInterface* fwm = core()->formWindowManager(); 
QDesignerFormWindowInterface* fw = fwm->activeFormWindow(); 

QWidget* mw = fw->mainContainer(); 

QLabel* label = new QLabel(mw);   //can be added correctly but not in the right hierarchy 
label->setText("I am a good girl."); 

Le mw (obtenu à partir FW-> mainContainer()) est en fait un MainWindow, mais les données réelles J'ai besoin dans la section:

mw -> children[2] (which is a QDesignerWidget) -> children 

Il y a 9 widgets dans le concepteur, et vous pouvez voir il y a 9 tableaux chez les enfants mentionnés ci-dessus; voir ce lien (une image) pour l'illustration.

http://img24.imagevenue.com/img.php?image=98871_a_122_476lo.jpg

Alors ... comment puis-je ajouter correctement le widget QLabel? Essayé les deux

QLabel* label = new QLabel(fw); // will be a sibling of MainContainer, which is the QMainWindow (mw) in this case 
QLabel* label = new QLabel(mw); // will be a sibling of QDesignerWidget 

et apprarently ou l'autre des œuvres.

Répondre

0

créer un widget et l'ajouter à votre fenêtre principale, comme il est votre widget central

mainWindow->setCentralWidget(centralWidget);

si vous souhaitez ajouter une étiquette, vous pouvez l'ajouter à ce widget central

+0

wow c'est rapide. va le vérifier demain au travail :) – purga

1

Vous devrait add tout QWidget à la QLayout du formulaire. Cela le mettra dans la stratégie d'affichage du formulaire lors du redimensionnement.

form->ui->layout->add(yourQWidget); 

En fonction de l'QLayout que vous utilisez, les paramètres de la fonction d'ajout ne sera pas le même.

4

Si vous voulez juste afficher un widget sur un formulaire, vous pouvez configurer votre QMainWindow ou QDialog être le parent widget:

QLabel *l = new QLabel(this); 
l->setText("My long string"); 

ce est un pointeur vers votre position actuelle QDialog ou QMainWindow .

Sinon, comme l'a fait remarquer ufukgun, vous pouvez utiliser setCentralWidget si vous avez besoin de votre widget pour occuper le centre de la fenêtre QMainWindow.

Questions connexes