2010-12-10 16 views
0

Je voudrais ajouter un QGraphicsView (une sous-classe appelée Menu) dans un QMainWindow par programmation (en utilisant du code).Comment puis-je ajouter par programme un QGraphicsView dans un QMainWindow?

En fait, je le fais déjà, mais le problème est le QGraphicsView intégré n'est pas montré.

Voici le code utilisé à l'intérieur je QMainWindow :: init()

menuView=new Menu(this); 
menuView->show(); 

Je crée déjà la scène et insérer des éléments à l'intérieur de la classe Menu.

Qu'est-ce qui ne va pas?

+0

Est-ce fragment de code tout ce que vous faites pour créer et montrer votre QGraphicsView, ou utilisez-vous mises en page que vous ne montre pas ici? –

+0

En fait c'est tout ce que je fais dans la fonction init(), mais dans QMainWindow il y a des frames. J'ai déjà essayé d'ajouter QGraphicsView à une image, mais cela ne fonctionne pas. – Zakaria

+0

Pourquoi avez-vous besoin d'une fonction 'init()'? Il y a des trucs comme des constructeurs pour cette IMHO ... – rubenvb

Répondre

2

essayer

menuView=new Menu(this); 
menuView->show(); 

QLayout* layout=new QVBoxLayout(); 
layout->addWidget(menuView); 
this->setLayout(layout); 

si vous n'utilisez pas mises en page, ou

menuView=new Menu(this); 
menuView->show(); 

QLayout* layout=this->layout(); 
layout->addWidget(menuView); 
this->setLayout(layout); 

si votre formulaire a déjà une mise en page.

+0

merci pour votre aide. J'ai testé cette solution mais ne fonctionne toujours pas. – Zakaria

2

Lorsque vous utilisez QMainWindow, utilisez setCentralWidget:

int main(int argc, char** argv) { 
    QApplication app(argc, argv); 
    ... 
    QMainWindow mw; 
    Menu menu; 
    mw.setCentralWidget(&menu); 
    mw.show(); 
    return app.exec(); 
} 
+0

merci pour votre aide. J'ai testé cette solution, cela fonctionne mais l'interface Menu prend toute la place de la fenêtre principale, je veux juste ajouter Menu dans le coté de QMainWindow. – Zakaria

+1

Que voulez-vous dire par "dans le côté"? Essayez d'ajouter un autre widget en tant que widget de niveau supérieur, définissez une mise en page (par exemple, QHBoxLayout) et ajoutez votre menu à la mise en page. Quel que soit le widget doit aller à côté du menu ajouter également à la mise en page. –

+0

Ce que je veux faire est d'avoir un menu dans le côté gauche du QMainWindow et d'autres cadres et composants de l'autre côté. – Zakaria