我找了好久都没有找到解决这个问题的办法: 在 QtCreator 中,我有一个带有 2 个 QToolBar 的主窗口,一个是垂直的(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
最佳答案
自 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...
关于qt - 在垂直和水平 QToolBar 定位之间设置优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50468980/