我正在使用Qt,我想要做的是在Windows中的系统托盘中的图标上显示自定义弹出窗口。通过查找screenGeometry()和availableGeometry()之间的差异,我可以通过使用geometry()和任务栏高度来获取图标坐标。因此弹出窗口可以正确排列,并且不会与任务栏重叠以适应不同的任务栏方向(例如,当任务栏位于屏幕的左侧或顶部时)。
问题在任务栏的自动隐藏打开时开始,然后显然availableGeometry返回与screenGeometry相同的值,我再也找不到任务栏的高度了。这导致弹出窗口与任务栏重叠,甚至显示在错误的位置。
我的问题是:当启用自动隐藏时,如何在Windows中正确检测任务栏的方向和大小?我应该使用一些winapi功能,还是纯粹用Qt(最好)?
答案 0 :(得分: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上编译的话。