QDialog mit Menüleiste und so
QDialog mit Menüleiste und so
Ist das OK, wenn ich von einem QMainWindow aus ein weiteres QMainWindow aufrufe?
Das zweite Fenster hat eigentlich Dialog-Funktion aber ich hätte da gerne Menüleisten und so...
Und das kann ja ein Dialog nicht.
HENNING
Das zweite Fenster hat eigentlich Dialog-Funktion aber ich hätte da gerne Menüleisten und so...
Und das kann ja ein Dialog nicht.
HENNING
Zuletzt geändert von klogg am 29. November 2005 16:01, insgesamt 2-mal geändert.
-
Flachkoepper
- Beiträge: 149
- Registriert: 11. Januar 2005 12:14
- Wohnort: Hannover
Ich hab das mit dem QMainWindow mal ausprobiert. Also das funktioniert schon, wenn man das aufruft.
Allerdings hat das nur eine show(), keine exec() Funktion.
Und ich hätte zum einen gerne einen Rückgabewert, und zum anderen
diese modal Eigenschaft, dass er das MainWindow überdeckt.
Daher möchte ich doch lieber einen Dialog nutzen, weiß aber nicht, wie ich da Menüleisten á la QMainWindow benutzen kann...
Kann mit das jeman derklären?
HENNING
Allerdings hat das nur eine show(), keine exec() Funktion.
Und ich hätte zum einen gerne einen Rückgabewert, und zum anderen
diese modal Eigenschaft, dass er das MainWindow überdeckt.
Daher möchte ich doch lieber einen Dialog nutzen, weiß aber nicht, wie ich da Menüleisten á la QMainWindow benutzen kann...
Kann mit das jeman derklären?
HENNING
Wie erzeugst du denn das MainWindow-Objekt?
Du weißt, dass du ein modales Fenster im Normalfall mit
und nicht modal mit
anlegst?
Denn im Prinzip unterscheidet sich das MainWindow nicht von einem Dialog. Denn auch einem Dialog könntest du ja eine Menüleiste verpassen!
Du weißt, dass du ein modales Fenster im Normalfall mit
Code: Alles auswählen
MyWindow myWindow( this );
myWindow.exec();Code: Alles auswählen
myWindow = new MyWindow ( this );
myWindow->show();
myWindow->raise();
myWindow->setActiveWindow();Denn im Prinzip unterscheidet sich das MainWindow nicht von einem Dialog. Denn auch einem Dialog könntest du ja eine Menüleiste verpassen!
shs
Ein QMainWindow hat aber keine exec() Funktion.
Die hat nur ein Dialog. Und die modal-Eigenschaft (ist in QWidget vorhanden) kann man nur abfragen aber nicht setzen.
Deshalb kann ein QMainWindow so wie ich das sehe ein anderes nicht überdecken.
Ich möchte es jetzt so machen, dass ich dem Dialog ein Menü hinzufüge.
Aber ich weiß nicht, wie das geht?
Denn QMainWindow hat eine Funktion menuBar(), ein Dialog nicht.
Oder kann ich das Menü einfach wie ein Widget benutzen?
Dann kann ich's ja einfach beliebig in den Dialog einbauen...
HENNING
Die hat nur ein Dialog. Und die modal-Eigenschaft (ist in QWidget vorhanden) kann man nur abfragen aber nicht setzen.
Deshalb kann ein QMainWindow so wie ich das sehe ein anderes nicht überdecken.
Ich möchte es jetzt so machen, dass ich dem Dialog ein Menü hinzufüge.
Aber ich weiß nicht, wie das geht?
Denn QMainWindow hat eine Funktion menuBar(), ein Dialog nicht.
Oder kann ich das Menü einfach wie ein Widget benutzen?
Dann kann ich's ja einfach beliebig in den Dialog einbauen...
HENNING
-
Flachkoepper
- Beiträge: 149
- Registriert: 11. Januar 2005 12:14
- Wohnort: Hannover
OK. Erstmal danke an euch beide.
Ich hab jetzt im Designer einen Dialog erstellt und im Prinzip geht das laut Doku mit dem Menu so:
Eigentlich soll sich die Menüleiste dann oben unter die Titelleiste setzen. (wie bei QMainWindow)
Sie setzt sich aber nur links oben unter den Titel, ist nur so breit wie der eine Menüpunkt
und überdeckt den Inhalt des Dialogs, anstatt ihn "nach unten zu verschieben".
Im Designer kann ich die Menüleiste aber noch nicht einbauen, weil gibt's nicht.
Wie kann ich denn jetzt troztdem den Designer nutzen UND nachher die Menüleiste richtig einsetzen?
HENNING
Ich hab jetzt im Designer einen Dialog erstellt und im Prinzip geht das laut Doku mit dem Menu so:
Code: Alles auswählen
HCMainEditor::HCMainEditor(QWidget * parent)
: QDialog(parent)
{
this->setupUi(this);
menuBar = new QMenuBar(this);
showColumnMenu = menuBar->addMenu("showColumn");
}Sie setzt sich aber nur links oben unter den Titel, ist nur so breit wie der eine Menüpunkt
und überdeckt den Inhalt des Dialogs, anstatt ihn "nach unten zu verschieben".
Im Designer kann ich die Menüleiste aber noch nicht einbauen, weil gibt's nicht.
Wie kann ich denn jetzt troztdem den Designer nutzen UND nachher die Menüleiste richtig einsetzen?
HENNING
Juhuu ich hab eine Lösung!
In der ui_bla.h Datei nachgeschaut wie das oberste Layout heißt und dann:
Aber das ist nicht schön, denn es soll ja nicht davon abhängen, was ich mir im Designer so zusammenklicke...
Gibt es vielleicht sowas wie einen Platzhalter, den ich im Designer dahin mache, wo später die Menüleiste hin soll?
Und wieso gibt es überhaupt im Designer keine QMenuBar? Das wäre doch hier genau richtig.
Wie sagt man den Trollen das?
HENNING
In der ui_bla.h Datei nachgeschaut wie das oberste Layout heißt und dann:
Code: Alles auswählen
HCMainEditor::HCMainEditor(QWidget * parent)
: QDialog(parent)
{
this->setupUi(this);
menuBar = new QMenuBar(this);
createActions();
createMenus();
vboxLayout->insertWidget(0, menuBar);
}Gibt es vielleicht sowas wie einen Platzhalter, den ich im Designer dahin mache, wo später die Menüleiste hin soll?
Und wieso gibt es überhaupt im Designer keine QMenuBar? Das wäre doch hier genau richtig.
Wie sagt man den Trollen das?
HENNING