Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top