2010-12-10 14 views
0

Ich möchte eine QGraphicsView (eine Unterklasse davon namens Menu) in einem QMainWindow programmgesteuert hinzufügen (mit Code).Wie kann ich programmgesteuert eine QGraphicsView in einem QMainWindow hinzufügen?

Eigentlich mache ich das schon, aber das Problem ist das eingebettete QGraphicsView wird nicht angezeigt. Hier

ist der Code, den ich innerhalb QMainWindow verwendet :: init()

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

ich bereits die Szene erstellen und Elemente in der Menu-Klasse einfügen.

Was ist los?

+0

Ist dieser Code-Schnipsel alles, was Sie tun, um Ihre QGraphicsView zu erstellen und zeigen, oder verwenden Sie Layouts, die Sie hier nicht zeigen? –

+0

In der Tat ist dies alles, was ich in der Funktion init() tun, aber im QMainWindow gibt es einige Frames. Ich habe bereits versucht, die QGraphicsView zu einem Rahmen hinzuzufügen, aber es funktioniert nicht. – Zakaria

+0

Warum brauchen Sie eine 'init()' Funktion? Es gibt Sachen wie Konstruktoren für diese IMHO ... – rubenvb

Antwort

2

versuchen

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

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

wenn Sie nicht Layouts verwenden oder

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

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

wenn Ihr Formular bereits ein Layout haben.

+0

danke für Ihre Hilfe. Ich habe diese Lösung getestet, funktioniert aber immer noch nicht. – Zakaria

2

Wenn QMainWindow arbeiten, verwenden setCentralWidget:

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

danke für Ihre Hilfe. Ich habe diese Lösung getestet, es funktioniert, aber die Menüoberfläche nimmt den gesamten Platz des Hauptfensters ein, ich möchte nur das Menü in der Seite des QMainWindow hinzufügen. – Zakaria

+1

Was meinst du mit "in der Seite"? Versuchen Sie, ein weiteres Widget als Widget auf oberster Ebene hinzuzufügen, ein Layout (z. B. QHBoxLayout) festzulegen und Ihr Menü dem Layout hinzuzufügen. Jedes Widget, das neben dem Menü angezeigt werden soll, wird ebenfalls zum Layout hinzugefügt. –

+0

Was ich tun möchte, ist ein Menü auf der linken Seite des QMainWindow und andere Frames und Komponenten auf der anderen Seite. – Zakaria

Verwandte Themen