5

我正在使用 Qt,我想做的是在 Windows 系统托盘中的图标上显示自定义弹出窗口。我可以通过使用geometry() 和任务栏高度通过查找screenGeometry() 和availableGeometry() 之间的差异来获取图标坐标。因此,弹出窗口可以正确对齐,并且不会与不同任务栏方向的任务栏重叠(例如,当任务栏位于左侧或屏幕顶部时)。

当任务栏的自动隐藏打开时,问题就开始了,然后显然 availableGeometry 返回与 screenGeometry 相同的值,我再也找不到任务栏的高度了。这会导致弹出窗口与任务栏重叠,甚至显示在错误的位置。

我的问题是:启用自动隐藏后,如何正确检测 Windows 中任务栏的方向和大小?我应该使用一些 winapi 功能,还是可以纯粹在 Qt 中使用(首选)?

4

1 回答 1

3

1)自动隐藏您使用此检查的状态:http: //msdn.microsoft.com/en-us/library/bb787947 (v=vs.85) .aspx 2)并使用此查找宽度/高度/方向:http:// /msdn.microsoft.com/en-us/library/bb787953(v=vs.85).aspx

希望这可以帮助。是的,这是 WinAPI 函数,所以你应该只在“#ifdef Q_OS_WINDOWS”中使用这个代码——如果你也想在 Linux 上编译的话。

于 2012-04-06T10:40:39.227 回答