qt - 设置垂直和水平 QToolBar 定位之间的优先级
问题描述
我已经搜索了很长时间,但我还没有找到解决这个问题的方法:在 QtCreator 中,我有一个带有 2 个 QToolBars 的主窗口,一个垂直的(Qt::LeftToolBarArea)和一个水平的(Qt: :底部工具栏区域)。这个想法是在左侧有一个主工具栏,在底部有一个辅助工具栏,只有几个小部件。
现在的问题是,无论我尝试什么,在添加底部工具栏时,左侧工具栏的高度都会缩小以为它腾出空间。是否可以反转行为?底部工具栏是否缩小为垂直工具栏腾出空间?
Qt 文档似乎并不否认这种可能性: QMainWindow generic layout with no specification about Horizontal toolbars are more "important" than others
环顾四周,我发现这个人有同样的问题(不过运气不好): https ://forum.qt.io/topic/62936/qtoolbar-positioning-within-qmainwindow
还有这张照片,但我不确定它是官方的: 工具栏之间的可能优先级(未记录)
有人知道这是一个失败的原因还是有一些技巧可以实现我正在寻找的东西?
编辑:
我找到了我正在寻找的东西,不幸的是它似乎只适用于 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...
推荐阅读
- c# - 如何在我的代码中正确实现 Polly 以避免冻结
- android - 没有 Xamarin debug.keystore
- python - 在python中将UTC时间转换为本地时区
- android - 在 Android (Ionic) 上运行时的 net::ERR_CLEARTEXT_NOT_PERMITTED
- sonarqube - 有什么方法可以使用声纳忽略 XML 中的行吗?
- python-3.x - Rasa Form Action - 插槽被相同的数据填充两次
- sql - Grid Gain web 控制台找不到 JDBC 驱动程序。?
- android - 必须是以下之一:RecyclerView.HORIZONTAL、RecyclerView.VERTICAL
- java - 无法打开上传到 firebase 的 pdf 文件
- azure - Azure Web 作业是 Azure 调度程序停用的一部分吗?