在QMainWindow Qt5.7中强制选项卡式基座

Jan*_*nis 5 c++ qt

我试图让我的QMainWindow只允许选项卡式QDockWidgets.如果我理解Qt文档,它应该与setDockOptions方法一起使用.

以下代码对我不起作用:

 QMainWindow window;
 window.setDockOptions(QMainWindow::ForceTabbedDocks);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?或者它是当前Qt版本中的错误?我正在使用Qt 5.7在MacPro上编码.

谢谢

Xia*_*Nox 4

ForceTabbedDocks仅适用于用户与扩展坞的交互。

要以编程方式在选项卡中添加新停靠点,您需要使用QMainWindow::tabifyDockWidgets. 例如,

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);
    }
}
Run Code Online (Sandbox Code Playgroud)