Menüs, Toolbars, usw. in einem Widget verwenden ?

Alles rund um die Programmierung mit Qt
Antworten
Matthias_
Beiträge: 16
Registriert: 4. April 2009 13:45

Menüs, Toolbars, usw. in einem Widget verwenden ?

Beitrag von Matthias_ »

Gibt es in Qt irgendeine Möglichkeit, Menüs oder Toolbars einem Widget hinzuzufügen, so wie es bei QMainWindow möglich ist ?

Mein problem ist: Ich möchte in meiner Anwendung, verschiedene Dockpanels haben, und diese sollen auch eigentständige Menüs erhalten.

Ist so etwas mit Qt realisierbar ?

Danke schonmal für (eventuelle) Antworten.

Matthias
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Warum verwendest du dann kein QMainWindow?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Neben dem, dass QMainWindow auch nur ein QWidget ist, und du beliebig davon in Layouts usw. stecken kannst, darfst du selber auch experimentieren.

SO kommst du darauf, dass es eine Klasse "QMenuBar" gibt, welche auch von QWidget erbt. QWidget kann man in Layouts packen. Verwende einfach ein QVBoxLayout als MainLayout, und packe ganz oben deine MenuBar rein.
Nur noch aufpassen, dass die MenuBar im Layout nen StretchFactor von 0 hat, alle anderen einen >0, dann ist doch alles klar...

Grüße
Franz
Matthias_
Beiträge: 16
Registriert: 4. April 2009 13:45

Beitrag von Matthias_ »

Danke für die schnelle Antwort.

Ich bin neu in Qt, drumm bin ich selber da nicht sofort drauf gekommen.
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

franzf hat geschrieben: Verwende einfach ein QVBoxLayout als MainLayout, und packe ganz oben deine MenuBar rein.
Verwende nachfolgendes und es ist noch einfacher
Qt Doku hat geschrieben:
void QLayout::setMenuBar ( QWidget * widget )
Tells the geometry manager to place the menu bar widget at the top of parentWidget(), outside QWidget::contentsMargins(). All child widgets are placed below the bottom edge of the menu bar.
tschüß
der TrollSoft
Antworten