获取 QToolbar 的当前停靠区域的简单方法
Posted
技术标签:
【中文标题】获取 QToolbar 的当前停靠区域的简单方法【英文标题】:Simple way to get the current docked area of a QToolbar 【发布时间】:2015-04-20 05:12:07 【问题描述】:我正在开发一个 Qt 项目,我需要在运行时获取工具栏的位置。有什么方法可以在QMainWindow
中获取QToolbar
的当前位置?
谢谢。
编辑:
感谢您的回答,我得到了 75% 的工作。但是QMainWindow::toolBarArea(QToolBar * toolbar)
有问题。
当我将两个工具栏停靠在一个区域(即底部区域)时,如下所示。
-----------------------------------
| Toolbar 1 |
-----------------------------------
| Toolbar 2 |
-----------------------------------
然后我保存从QMainWindow::toolBarArea
获得的区域,使用QSettings然后加载它们,它加载如下。
-----------------------------------
| Toolbar 1 | Toolbar 2 |
-----------------------------------
有没有办法阻止这种情况?
【问题讨论】:
抱歉错误。我需要获取工具栏的位置。 【参考方案1】:在QMainWindow
范围内,可以调用QMainWindow::toolBarArea(QToolBar *toolbar)
获取工具栏位置。
返回工具栏的 Qt::ToolBarArea。如果尚未添加工具栏 到主窗口,这个函数返回Qt::NoToolBarArea。
它返回enum
:
enum ToolBarArea
LeftToolBarArea = 0x1,
RightToolBarArea = 0x2,
TopToolBarArea = 0x4,
BottomToolBarArea = 0x8,
ToolBarArea_Mask = 0xf,
AllToolBarAreas = ToolBarArea_Mask,
NoToolBarArea = 0
;
【讨论】:
谢谢。我在 API 中找不到这个。傻我:) 还有一个问题。当有两个工具栏停靠在同一区域,但作为堆栈(例如,作为顶部区域中的两行)时,我如何才能在一个区域内获得该位置? @PraneethNilangaPeiris 请更具体一点?我不确定是什么问题。您可以将目标工具栏传递给函数并返回工具栏所在的区域。否则,如果您想要准确的坐标,您可以致电QToolBar::geometry
获取(如QRect
)。
@PraneethNilangaPeiris 您关于如何识别堆叠工具栏的新问题是一个很好的问题,我建议您开始一个新帖子并使用适当的标题。不仅因为在 SO 中将原始帖子更新为新帖子是不恰当的(将来您应该真正避免这种情况),而且以适当的标题开始新帖子会帮助您吸引更多注意力。以上是关于获取 QToolbar 的当前停靠区域的简单方法的主要内容,如果未能解决你的问题,请参考以下文章