qt - 在垂直和水平 QToolBar 定位之间设置优先级

标签 qt qt-creator toolbar qmainwindow qtoolbar

我找了好久都没有找到解决这个问题的办法: 在 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/

相关文章:

qt - QT on Symbian 如何设置应用程序图标?

Windows 上的 QTCreator : how to set temp and destination folders?

qt - 如何将整个目录添加到 QT Creator 项目中

android - 调整工具栏不透明度

javascript - 如何在外部网站顶部显示 webapp 的标题栏?

c# - 我如何通知其他应用程序我的应用程序是 Windows 桌面的一部分?

c++ - 找不到“ui_mainwindow.h”文件

c++ - 将 QList<customobj *> 暴露给 QML

path - 如何在Qt Creator中添加包含路径?

c++ - Qt输出pdf为空