Qt托盘图标拖放
Posted
技术标签:
【中文标题】Qt托盘图标拖放【英文标题】:Qt Tray Icon Drag and Drop 【发布时间】:2011-04-30 00:11:23 【问题描述】:有谁知道是否可以使用 Qt 拖放托盘图标?
【问题讨论】:
【参考方案1】:我一直在做一些研究,这是我想出的:
QSystemTrayIcon 无法显式处理拖放事件。但是,有一个基于 Spifftastic 托盘图标定位方法的解决方法。
-
您创建了一个颜色独特的图标
并将其放置为简短的图标
拍一张截图。
鉴于您知道颜色
图标的顺序,你可以
搜索屏幕截图和
找到特定图标的
位置。
放置了一个透明小部件
在图标上方并用作
放下目标。
我还没有处理一些更精细的操作细节,但这就是它的要点。所有事情都认为这是一种 hacky 方式,但鉴于没有其他方法可以做到这一点,我认为这是可以接受的。
Fluffy App(用 C# 编写)使用 Spifftastic 方法来定位托盘图标。我假设关于透明窗口的部分是他们如何实现的,但我还没有反编译和检查他们的系统。
【讨论】:
【参考方案2】:由于 QSystemTrayIcon 是 QObject,而不是 QWidget,我猜这是不可能的。系统托盘图标并不真正归 Qt 所有 - 它被传递到“桌面”,即 Gnome/KDE/Windows/Mac 的任何部分正在绘制相关区域。至少在 Mac 上,您会掉到菜单栏上,这将是一个非常奇怪的 UI。对于 Gnome 和 KDE,它是 FreeDesktop.org 的标准,但我不认为它实际上是由您的进程来执行绘图的,因此 Qt 无法获取诸如拖放之类的事件。
【讨论】:
以上是关于Qt托盘图标拖放的主要内容,如果未能解决你的问题,请参考以下文章