Menubar und Toolbar liegen aufeinander

Alles rund um die Programmierung mit Qt
Antworten
mase
Beiträge: 39
Registriert: 8. Mai 2007 00:17

Menubar und Toolbar liegen aufeinander

Beitrag von mase »

Hallo!
Ich habe heute angefangen, mein begonnenes Projekt von Qt3 auf
Qt4 umzuschreiben.
Jedoch hab ich nun das Problem, dass die Menubar und die Toolbar
aufeinander liegen. Auch wird die Menubar nicht komplett dargestellt,
sondern nur 2 Menüs, dann die Pfeile zum erweitern.
Hier ein Codeauszug:

Code: Alles auswählen

void cMainwindow::createMenuBar()
{
    MenuBar =new QMenuBar(this);
    FileMenu = new QMenu(tr("&File"));
    MenuBar->addMenu(FileMenu);
    FileMenu->addAction(NewAct);
    FileMenu->addAction(OpenAct);
...

void cMainwindow::createToolBar()
{
    ToolBar = new QToolBar(tr("Toolbar"), this);
    addToolBar(Qt::TopToolBarArea, ToolBar);
    ToolBar->addAction(NewAct);
    ToolBar->addAction(OpenAct);
...
Kann mir jemand sagen, was ich falsch mache?
Ich programmiere unter Debian Lenny (Qt-4.3.1) mit Kdevelop.
RD1978
Beiträge: 84
Registriert: 5. Juni 2007 08:00
Wohnort: Stralsund (DDR)

Beitrag von RD1978 »

Hallo,

ein QMainWindow hat schon ein QMenuBar bzw. erzeugt eins mit der Methode "menuBar()". Diese Methode gibt Dir einen Pointer auf die QMenuBar zurück.

Versuch´ s mal mit:

Code: Alles auswählen

void cMainwindow::createMenuBar()
{
    MenuBar = menuBar();

    FileMenu = new QMenu( tr( "&File" ) );
    FileMenu->addAction( NewAct );
    FileMenu->addAction( OpenAct );

    MenuBar->addMenu( FileMenu );
}
MfG RD1978
mase
Beiträge: 39
Registriert: 8. Mai 2007 00:17

Beitrag von mase »

Danke, das war's!
Wusst ich nicht, dass ne Menubar schon existiert.
Das war bei Qt3 doch nicht so, oder?
RD1978
Beiträge: 84
Registriert: 5. Juni 2007 08:00
Wohnort: Stralsund (DDR)

Beitrag von RD1978 »

Hallo,

hab mich mit Qt3 nicht so viel beschäftigt, aber laut Doku 3.0 war das auch schon so.

Du kannst auch deine eigene MenuBar nehmen, dann must Du nur "setMenuBar( menuBar )" aufrufen, damit das MainWindow diese aufnimmt.

MfG RD1978
mase
Beiträge: 39
Registriert: 8. Mai 2007 00:17

Beitrag von mase »

Ahso!
Danke dir!
mase
Beiträge: 39
Registriert: 8. Mai 2007 00:17

Beitrag von mase »

Was auch nicht mehr funktioniert, ist das Hinzufügen eines Submenüs.
Ich krieg einen Segfault.
Ich will ein Submenü "Bearbeiten" einfügen, indem, "Alles auswählen",
"Nichts auswählen" und "Auswahl umkehren" enthalten ist.

Code: Alles auswählen

    EditMenu = new QMenu(tr("&Edit"));
    EditMenu->addAction(UndoAct);
    EditMenu->addAction(RedoAct);
    EditMenu->addSeparator();
    EditMenu->addAction(CutAct);
    EditMenu->addAction(CopyAct);
    EditMenu->addAction(PasteAct);
    EditMenu->addAction(DeleteAct);
    EditMenu->addSeparator();
    EditMenu->addMenu(SelectSubMenu);
    SelectSubMenu->addAction(SelectAllAct);
    SelectSubMenu->addAction(SelectNoneAct);
    SelectSubMenu->addAction(SelectInvAct);
mase
Beiträge: 39
Registriert: 8. Mai 2007 00:17

Beitrag von mase »

Das mit dem Submenü hab ich lösen können.

Code: Alles auswählen

    EditMenu = new QMenu(tr("&Edit"));
    EditMenu->addAction(UndoAct);
    EditMenu->addAction(RedoAct);
    EditMenu->addSeparator();
    EditMenu->addAction(CutAct);
    EditMenu->addAction(CopyAct);
    EditMenu->addAction(PasteAct);
    EditMenu->addAction(DeleteAct);
    EditMenu->addSeparator();
    SelectSubMenu =new QMenu(tr("Select"));
    SelectSubMenu->addAction(SelectAllAct);
    SelectSubMenu->addAction(SelectNoneAct);
    SelectSubMenu->addAction(SelectInvAct);
    EditMenu->addMenu(SelectSubMenu);
Ist doch alles etwas anders, als bei Qt3.
Antworten