Force tab in QMainWindow Qt5.7

I am trying to get my QMainWindow to only allow the QDockWidgets tab. If I understand Qt Documentation correctly, it should work with the setDockOptions method.

The following code did not work for me:

 QMainWindow window;
 window.setDockOptions(QMainWindow::ForceTabbedDocks);

What am I doing wrong? Or is this a bug in the current version of Qt? I am coding for MacPro and I am using Qt 5.7.

thank

+4
source share
1 answer

ForceTabbedDocks only applies to user interactions with docks.

To programmatically add new docks in tabs, you need to use QMainWindow::tabifyDockWidgets. For instance,

void MainWindow::addTabbedDock(Qt::DockWidgetArea area, QDockWidget *widget)
{
    QList<QDockWidget*> allDockWidgets = findChildren<QDockWidget*>();
    QVector<QDockWidget*> areaDockWidgets;
    for(QDockWidget *w : allDockWidgets) {
        if(dockWidgetArea(w) == area) {
            areaDockWidgets.append(w);
        }
    }

    if(areaDockWidgets.empty()) {
        // no other widgets
        addDockWidget(area, widget);
    } else {
        tabifyDockWidget(areaDockWidgets.last(), widget);
    }
}
+1
source

Source: https://habr.com/ru/post/1666844/


All Articles