[英]Force Tabbed Dock in QMainWindow Qt5.7
我試圖讓我的 QMainWindow 只允許選項卡式 QDockWidgets。 如果我正確理解 Qt 文檔,它應該可以與 setDockOptions-method 一起使用。
以下代碼對我不起作用:
QMainWindow window;
window.setDockOptions(QMainWindow::ForceTabbedDocks);
我究竟做錯了什么? 或者它是當前Qt版本中的錯誤? 我在 MacPro 上編碼,我使用的是 Qt 5.7。
謝謝
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);
}
}
這與@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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.