DevGuy
DevGuy

Reputation: 636

Qt menubar being offset

Im using setContentsMargins to add spacing between my tabs(central widget) and dock widgets but it's also offsetting the menu bar.

test case

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
   MainWindow(QWidget *parent = 0)
    : QMainWindow(parent)
   {
      QMenu* fileMenu = menuBar()->addMenu("File");
      fileMenu->addMenu("menu item");

    QTabWidget* tabs = new QTabWidget();
    tabs->addTab(new QWidget(), "something");

    setCentralWidget(tabs);

    QDockWidget* dw = new QDockWidget("docking", this);
    dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    dw->setWidget(new QTabWidget(dw));
    addDockWidget(Qt::RightDockWidgetArea, dw);
    setContentsMargins(5, 5, 5, 5);
    resize(500, 500);
  }

  ~MainWindow() {}
};

image

enter image description here

Upvotes: 0

Views: 528

Answers (1)

Paraboloid87
Paraboloid87

Reputation: 428

I tried it this way:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenu* fileMenu = menuBar()->addMenu("File");
    fileMenu->addMenu("menu item");


    QWidget* widget = new QWidget(this);
    QHBoxLayout *layout = new QHBoxLayout(widget);

    QTabWidget* tabs = new QTabWidget(widget);
    tabs->addTab(new QWidget(), "something");


    QDockWidget* dw = new QDockWidget("docking", widget);
    dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    dw->setWidget(new QTabWidget(dw));
    addDockWidget(Qt::RightDockWidgetArea, dw);
    resize(500, 500);

    widget->setLayout(layout);
    layout->addWidget(tabs);
    layout->addWidget(dw);
    layout->setContentsMargins(50, 50, 50, 50);

    setCentralWidget(widget);
}

It works for the layout. But there is no drag and drop area when you undock the widget. You can dock it by double clicking the title bar. I did not figure out how to keep the drag and drop area. I am interested, if anyone knows how that can be achieved.

Upvotes: 1

Related Questions