Seite 1 von 1

Menubar und Toolbar liegen aufeinander

Verfasst: 30. August 2007 18:35
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.

Verfasst: 30. August 2007 20:10
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

Verfasst: 31. August 2007 00:16
von mase
Danke, das war's!
Wusst ich nicht, dass ne Menubar schon existiert.
Das war bei Qt3 doch nicht so, oder?

Verfasst: 31. August 2007 08:22
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

Verfasst: 31. August 2007 12:03
von mase
Ahso!
Danke dir!

Verfasst: 31. August 2007 13:58
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);

Verfasst: 31. August 2007 14:03
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.