Frage

Currently I have QMenuBar with three QActions and it looks like this:

enter image description here

but I would like to get this (get some QActions right-aligned):

enter image description here

Is there a way to do this?

War es hilfreich?

Lösung

Well one possible solution is here. But it involves implementing your own style (QStyle as I recall). However here is a snippet that I have just tried on mainwindow class:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)  {  

ui->setupUi(this);

QMenuBar *barLeft = new QMenuBar; 
QMenuBar *barRight = new QMenuBar;

barLeft->addAction("Foo Left 1");
barLeft->addAction("Foo Left 2");
barRight->addAction("Foo Left 1");
barRight->addAction("Foo Left 2");

QHBoxLayout *mainMenuLayout = new QHBoxLayout;

mainMenuLayout->addWidget(barLeft);
mainMenuLayout->addWidget(barRight);

mainMenuLayout->setAlignment(barLeft, Qt::AlignLeft);
mainMenuLayout->setAlignment(barRight, Qt::AlignRight);

QWidget *central = new QWidget;
central->setLayout(mainMenuLayout);

setCentralWidget(central);

}

This should be suitable.

Andere Tipps

Probably the most simple solution to this particular problem is to use the corner widget. It can be used to place almost anything at the rightmost position, of course also a new menu bar:

QMenuBar *bar = new QMenuBar(ui->menuBar);

QMenu *menu = new QMenu("Test menu", bar);
bar->addMenu(menu);

QAction *action = new QAction("Test action", bar);
bar->addAction(action);

ui->menuBar->setCornerWidget(bar);

Result:

Standard QMenuBar with additional rightmost 2nd QMenuBar

This is esp. helpful when the main menu is still to be edited in QDesigner...

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