QMenu wird nicht komplett dargestellt!

Alles rund um die Programmierung mit Qt
Antworten
roughneck
Beiträge: 4
Registriert: 8. Juni 2007 21:13

QMenu wird nicht komplett dargestellt!

Beitrag 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ß
Dateianhänge
Bildschirmfoto.png
Bildschirmfoto.png (668 Bytes) 3659 mal betrachtet
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Zeig uns bitte auch den Code wie du die Menüs 'Optionen' und 'Hilfe' hinzufügst...
roughneck
Beiträge: 4
Registriert: 8. Juni 2007 21:13

Beitrag 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ß
@udisello
Beiträge: 50
Registriert: 19. März 2007 14:58
Wohnort: Sachsen

Beitrag 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.
MfG @udisello

Qt Version 4.3.0, MS VS 2005
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
roughneck
Beiträge: 4
Registriert: 8. Juni 2007 21:13

Beitrag 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 !?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Du hast das Layout aber schon einem Widget zugewiesen, daß du mit setCentralWidget gesetzt hast?
roughneck
Beiträge: 4
Registriert: 8. Juni 2007 21:13

Beitrag von roughneck »

hi,

sorry aber verstehe gerade nicht genau was du meinst :oops:

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ß
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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);
     
Antworten