Поместите QMenuBar в QMainWindow Bottom в QT - PullRequest
1 голос
/ 22 февраля 2012

Есть ли способ поместить QMenuBar внизу экрана (я имею в виду, внизу QMainWindow)?

Я работаю над своим дипломным проектом, и мой директор попросил меня поместить QMenuBar внизу экрана. Это возможно? Я пытался настроить геометрию менубара. В Qt Designer я могу перемещать положение панели, но когда я запускаю свой проект, строка меню всегда вверху.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 22 февраля 2012

Не используйте QMenuBar по умолчанию, предоставляемый с QMainWindow. Вместо этого создайте свой собственный. Этот пример доказательства концепции создает новый QMenuBar, который добавляется к QVBoxLayout, который был добавлен в основное окно:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QMenuBar* bar = new QMenuBar(this);
    ui->verticalLayout->addWidget(bar);

    QMenu* menu1 = new QMenu("First menu", bar);
    menu1->addMenu("Foo");
    menu1->addMenu("Bar");

    QMenu* menu2 = new QMenu("Second menu", bar);
    menu2->addMenu("Foo");
    menu2->addMenu("Bar");

    bar->addMenu(menu1);
    bar->addMenu(menu2);
}

Это работает по крайней мере в Windows.

0 голосов
/ 22 февраля 2012

Я поместил меню в QDockWidget, поэтому я предполагаю, что также возможно разместить строку меню внизу.

Но вы должны сделать это программно.QMenuBar наследует QWidget, поэтому просто добавьте QWidget внизу QMainWindow, а затем создайте QMenuBar, указав этот QWidget в качестве родительского виджета.

...