我搜索了很长时间,但我还没有设法找到解决这个问题的方法: 在QtCreator中,我有一个带有2个QToolBars的主窗口,一个垂直(Qt :: LeftToolBarArea)和一个水平(Qt :: BottomToolBarArea)。 我们的想法是在左侧有一个主工具栏,在底部有一个辅助工具栏,只有几个小部件。
现在的问题是,无论我尝试什么,当添加底部工具栏时,左边的工具栏会缩小高度以为其腾出空间。 是否有可能颠倒行为? 底部工具栏是否缩小以为垂直工具栏腾出空间?
Qt文档似乎并没有否认这种可能性: QMainWindow generic layout with no specification about horizontal toolbars being more "important" than others
环顾四周,我发现这个家伙有同样的问题(虽然没有运气): https://forum.qt.io/topic/62936/qtoolbar-positioning-within-qmainwindow
另外这张照片,但我不确定它是否正式: Possible priority (undocumented) between toolbars
有人知道这是否是一个失败的原因还是有一些技巧可以实现我正在寻找的东西?
编辑:
我发现了我正在寻找的东西,不幸的是它似乎仅适用于QDockWidgets: http://doc.qt.io/archives/qt-4.8/qmainwindow.html#setCorner
答案 0 :(得分:0)
从Qt4开始,工具栏占据了中心窗口小部件周围固定位置的区域,因此我不相信有一个简单的解决方案可以直接使用QToolBar
来实现。但是,QDockWidgets
有一个简单的解决方案(正如您所指出的那样)。只需将每个QToolBar
放在单独的QDockWidget
内,然后使用QMainWindow::setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea)
我目前无法访问编译器,但应该是:
QMainWindow mainWindow;
mainWindow.setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
auto dock = new QDockWidget("Dock", &mainWindow);
auto windowInsideDock = new QMainWindow(dock, Qt::Widget);
auto toolBar = new QToolBar(windowInsideDock);
windowInsideDock->addToolBar(toolBar);
dock->setWidget(insideDock);
mainWindow.addDockWidget(Qt::LeftDockWidgetArea, dock);
//... similar for bottom widget...