Qt: Remove space between QToolBars

66 views Asked by At

In the code below, you see two toolbars. Each toolbar has two buttons (1.1, 1.2 and 2.1, 2.2). You will notice a space between the toolbars, that grows, as you drag the horizontal window size. I want to get rid of this space. I want the inner toolbars to left-align tightly. What can I do?

Here's my tiny example C++ code:

#include <QApplication>
#include <QMainWindow>
#include <QToolBar>
#include <QTabWidget>
#include <QWidget>
#include <QHBoxLayout>

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);
    QMainWindow window;

    QToolBar* outerToolBar = new QToolBar(&window);
    QTabWidget* tabWidget = new QTabWidget(&window);
    QWidget* innerWidget = new QWidget(&window);
    QHBoxLayout* innerLayout = new QHBoxLayout(innerWidget);
    QToolBar* innerToolBar1 = new QToolBar(innerWidget);
    QToolBar* innerToolBar2 = new QToolBar(innerWidget);

    innerLayout->addWidget(innerToolBar1);
    innerLayout->addWidget(innerToolBar2);
    innerWidget->setLayout(innerLayout);

    outerToolBar->addAction("Outer Action");
    tabWidget->addTab(innerWidget, "Tab 1");

    innerToolBar1->addAction(new QAction("Act1.1"));
    innerToolBar1->addAction(new QAction("Act1.2"));
    innerToolBar2->addAction(new QAction("Act2.1"));
    innerToolBar2->addAction(new QAction("Act2.2"));

    window.addToolBar(outerToolBar);
    window.setCentralWidget(tabWidget);
    window.resize(500, 200);
    window.show();

    return app.exec();
}
1

There are 1 answers

0
kenash0625 On

I insert one line innerLayout->addStretch();

#include <QApplication>
#include <QMainWindow>
#include <QToolBar>
#include <QTabWidget>
#include <QWidget>
#include <QHBoxLayout>

int main(int argc, char* argv[]) {
    QApplication app(argc, argv);
    QMainWindow window;

    QToolBar* outerToolBar = new QToolBar(&window);
    QTabWidget* tabWidget = new QTabWidget(&window);
    QWidget* innerWidget = new QWidget(&window);
    QHBoxLayout* innerLayout = new QHBoxLayout(innerWidget);
    QToolBar* innerToolBar1 = new QToolBar(innerWidget);
    QToolBar* innerToolBar2 = new QToolBar(innerWidget);

    innerLayout->addWidget(innerToolBar1);
    innerLayout->addWidget(innerToolBar2);
    innerLayout->addStretch();
    innerWidget->setLayout(innerLayout);

    outerToolBar->addAction("Outer Action");
    tabWidget->addTab(innerWidget, "Tab 1");

    innerToolBar1->addAction(new QAction("Act1.1"));
    innerToolBar1->addAction(new QAction("Act1.2"));
    innerToolBar2->addAction(new QAction("Act2.1"));
    innerToolBar2->addAction(new QAction("Act2.2"));

    window.addToolBar(outerToolBar);
    window.setCentralWidget(tabWidget);
    window.resize(500, 200);
    window.show();

    return app.exec();
}