获取 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 的当前停靠区域的简单方法的主要内容,如果未能解决你的问题,请参考以下文章

获取 MFC CDockablePane 停靠的停靠区域

wpf仿qq边缘自动停靠,支持多屏

wpf仿qq边缘自动停靠,支持多屏

用html创建停靠面板的最佳方法是什么? [关闭]

计算 CFrame 中的空闲区域

List元素排序简例