Frage

Gibt es eine Möglichkeit, eine QMenuBar am unteren Bildschirmrand (ich meine am unteren Rand von QMainWindow) zu platzieren?

Ich arbeite an meinem Diplomarbeitsprojekt und mein Direktor hat mich gebeten, eine QMenuBar am unteren Bildschirmrand anzubringen.Ist das möglich? Ich habe versucht, die Menüleistengeometrie anzupassen.In Qt Designer kann ich die Balkenposition verschieben, aber wenn ich mein Projekt ausführe, ist die Menüleiste immer oben.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Verwenden Sie nicht die mit dem QMainWindow gelieferte Standard-QMenuBar.Erstellen Sie stattdessen Ihre eigenen.In diesem Proof-of-Concept-Beispiel wird eine neue QMenuBar erstellt, die einem QVBoxLayout hinzugefügt wird, das dem Hauptfenster hinzugefügt wurde:

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);
}

Dies funktioniert zumindest unter Windows.

Andere Tipps

Ich habe Menüs im QDockWidget platziert, daher gehe ich davon aus, dass es auch möglich ist, die Menüleiste unten zu platzieren.

Aber Sie müssen es programmatisch tun.QMenuBar erbt QWidget. Fügen Sie einfach ein QWidget am unteren Rand von QMainWindow hinzu und erstellen Sie eine QMenuBar, in der dieses QWidget als übergeordnetes Widget angegeben ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top