【发布时间】:2012-06-21 21:15:00
【问题描述】:
我有一个带有 C++ 应用程序的 Qt 4.7.4,它在 Mac 上使用统一的标题和工具栏:
setUnifiedTitleAndToolBarOnMac(true);
在我的应用程序运行时的某个时刻,我需要以编程方式了解统一标题和工具栏的高度。
我怎样才能得到它的高度?
【问题讨论】:
我有一个带有 C++ 应用程序的 Qt 4.7.4,它在 Mac 上使用统一的标题和工具栏:
setUnifiedTitleAndToolBarOnMac(true);
在我的应用程序运行时的某个时刻,我需要以编程方式了解统一标题和工具栏的高度。
我怎样才能得到它的高度?
【问题讨论】:
至少对于 Qt 4.8.4 和 Mountain Lion,这看起来有点问题:
打开工具栏,QMainWindow::frameGeometry() 报告错误的 y 位置,但正确的 total 窗口大小。在我的测试中,它的height() 减去QMainWindow::geometry() 的height() 是标题栏和统一工具栏的高度。要找出单独的工具栏有多高,您可以将其隐藏并使用差异。
从事此工作的 Qt 人员似乎遇到了一些问题,并已停止使用 QMainWindow::setUnifiedTitleAndToolBarOnMac():
来自 Qt 4 的统一工具栏实现没有也不会被移植 到 Qt 5。这意味着调用 QMainWindow::setUnifiedTitleAndToolBarOnMac 有 对 Qt 5 没有影响。包装 NSToolbar 的替代 API 可用于 QtMacExtras。
【讨论】: