0

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();
}
KungPhoo
  • 516
  • 4
  • 18
  • You may want to try setting a size policy on the first toolbar (or maybe both?): `innerToolBar1->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum)`. This tells Qt that the `sizeHint` of the toolbar is the maximum (in width) and minimum (in height) size of the toolbar. The sizeHint should be the "appropriate" size for the toolbar given the actions that it has. – Dean Johnson Jul 18 '23 at 17:28

1 Answers1

1

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();
}
kenash0625
  • 657
  • 3
  • 8