Seite 1 von 1
QMenu wird nicht komplett dargestellt!
Verfasst: 8. Juni 2007 21:20
von roughneck
Hallo,
ich bin qt neuling und bin gerade dabei ein Window mit einem Menu zu programmieren.
Habe das Menu auch schon folgendermaßen in meiner Menu Klasse geschrieben:
Code: Alles auswählen
menuBar = new QMenuBar(this);
QAction *newGameAct = new QAction("New Game",menuBar);
connect(newGameAct, SIGNAL(triggered()), this, SLOT(neuesSpiel()));
QAction *exitAct = new QAction("E&xit", menuBar);
connect(exitAct, SIGNAL(triggered()), this, SLOT(close()));
QMenu *fileMenu = menuBar->addMenu("&File");
fileMenu->addAction(newGameAct);
fileMenu->addAction(exitAct);
Wenn ich jetzt weitere Menupunkte wie Optionen oder Help hinzufüge,
stellt er mir nur File dar und den rest erreiche ich mit einem kleinen Pfeil den ich aufklappen muss.
Hat jemand eine Idee wieso er das macht? Bild habe ich angehangen.
Danke im vorraus
Gruß
Verfasst: 8. Juni 2007 21:34
von upsala
Zeig uns bitte auch den Code wie du die Menüs 'Optionen' und 'Hilfe' hinzufügst...
Verfasst: 8. Juni 2007 21:41
von roughneck
hi
hier die anderen menus:
Code: Alles auswählen
// ---------------- MENU Options --------------------------------------
QAction *backgroundAct = new QAction("Background",menuBar);
connect(backgroundAct, SIGNAL(triggered()), this,SLOT(setBackGround()));
QAction *level1Act = new QAction("Level 1", menuBar);
connect(level1Act, SIGNAL(triggered()), this, SLOT(setLevel1()));
QAction *level2Act = new QAction("Level 2", menuBar);
connect(level2Act, SIGNAL(triggered()), this, SLOT(setLevel2()));
QAction *level3Act = new QAction("Level 3", menuBar);
connect(level3Act, SIGNAL(triggered()), this, SLOT(setLevel3()));
QMenu *optMenu = menuBar->addMenu("&Options");
optMenu->addAction(backgroundAct);
optMenu->addAction(level1Act);
optMenu->addAction(level2Act);
optMenu->addAction(level3Act);
// ---------------- END MENU Options --------------------------------------
QAction *gameDescAct = new QAction("Game Description",menuBar);
connect(gameDescAct, SIGNAL(triggered()), this, SLOT(spielAnleitung())); // New game Methode aufrufen
QAction *aboutAct = new QAction("About", menuBar);
connect(aboutAct, SIGNAL(triggered()), this, SLOT(about()));
QMenu *helpMenu = menuBar->addMenu("&Help");
helpMenu->addAction(gameDescAct);
helpMenu->addAction(aboutAct);
// ---------------- END MENU HELP --------------------------------------
das ist alles was ich im menu haben möchte.
gruß
Verfasst: 8. Juni 2007 21:53
von @udisello
Code: Alles auswählen
QAction* pCloseAction = new QAction( tr( "&Schließen" ), this );
connect( pCloseAction, SIGNAL( triggered() ), qApp, SLOT( quit() ) );
QAction* pShow = new QAction( tr( "&Show" ), this );
connect( pShow, SIGNAL( triggered() ), this, SLOT( Show() ) );
QMenu* pFileMenu = menuBar()->addMenu( tr( "&Datei" ) );
pFileMenu->addAction( pCloseAction );
QMenu* pSettingsMenu = menuBar()->addMenu( tr( "&Einstellungen" ) );
pSettingsMenu->addAction( pShow );
Du solltest als parent für deine QAction nicht menubar, sondern dein MainWindow angeben. Bei =menuBar()->addMenu "()" nicht vergessen.
Verfasst: 8. Juni 2007 22:10
von upsala
Ich hoffe du hast deinen Code im QMainWindow geschrieben. Wenn ja, dann vergiss den Kommentar von @udisello gleich wieder und ersetzte alle deine menuBar durch menuBar(). Das new brauchste dann auch nicht aufzurufen... Oder du rufst am Schluss setMenuBar(menuBar) auf...
Verfasst: 8. Juni 2007 22:15
von roughneck
danke für den tipp, leider wird das menu immer noch nicht richtig dargestellt.
ich habe aber eher die vermutung das es nicht an dem menu liegt, sondern am layoutmanager den ich verwende. ich nehme den QVBoxLayout.
in meinem main window wird die menubar dargestellt und dann in einem layoutmanager die klasse brett.
in dieser klasse können sich geometrische figuren bewegen. ich denke das dieses objekt meine menuleiste überdeckt, wenn ich nämlich die klasse brett herausnehme dann wird die menuleiste korrekt dargestellt.
eine idee was ich ändern könnte !?
Verfasst: 8. Juni 2007 22:17
von upsala
Du hast das Layout aber schon einem Widget zugewiesen, daß du mit setCentralWidget gesetzt hast?
Verfasst: 8. Juni 2007 22:35
von roughneck
hi,
sorry aber verstehe gerade nicht genau was du meinst
ich hab in der main folgendes:
Code: Alles auswählen
QWidget* w = new MenuBar(); // MenuBar baut mir mein Menu
QVBoxLayout* layout = new QVBoxLayout();
Brett* b = new Brett(Liste);
layout->addWidget(b);
w->setFixedSize(640,410);
w->setLayout(layout);
w->show();
wie kann ich das mit setCentralWidget machen?
Danke
Gruß
Verfasst: 8. Juni 2007 23:02
von upsala
Code: Alles auswählen
QWidget* w = new MenuBar(); // MenuBar baut mir mein Menu
//das Thema hatten wir schon...
Brett* b = new Brett(Liste);
setCentralWidget(b);