我正在尝试让我的QMainWindow只允许选项卡式QDockWidgets。如果我正确理解了Qt文档,它应该与setDockOptions-method一起工作。
下面的代码对我不起作用:
QMainWindow window;
window.setDockOptions(QMainWindow::ForceTabbedDocks);我做错了什么?或者它是当前Qt版本中的一个bug?我在MacPro上编程,我用的是Qt5.7。
谢谢
发布于 2017-03-21 01:25:52
ForceTabbedDocks仅适用于与坞站的用户交互。
要以编程方式在选项卡中添加新的docks,您需要使用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);
}
}发布于 2021-01-10 08:31:14
这是与@Xian Nox相同的答案,但适用于python:
def addTabbedDock(self, area: QtCore.Qt.DockWidgetArea, dockwidget: QtWidgets.QDockWidget):
curAreaWidgets = [d for d in self.findChildren(QtWidgets.QDockWidget)
if self.dockWidgetArea(d) == area]
try:
self.tabifyDockWidget(curAreaWidgets[-1], dockwidget)
except IndexError:
# First dock in area
self.addDockWidget(area, dockwidget)https://stackoverflow.com/questions/41663818
复制相似问题