Qt托盘图标拖放

时间:2010-10-25 01:29:14

标签: c++ qt qt4 drag-and-drop

有没有人知道是否可以使用Qt拖放托盘图标?

2 个答案:

答案 0 :(得分:6)

我一直在做一些研究,这就是我想出的:

QSystemTrayIcon无法显式处理拖放事件。但是,有一种基于Spifftastic托盘图标定位方法的解决方法。

  1. 您可以创建一个独特的彩色图标 并将其作为简短的图标 一刻,并截取它的截图。
  2. 鉴于你知道颜色 图标的序列,你可以 搜索截图和 找到特定的图标 位置。
  3. 定位透明小部件 在图标上,用作 放下目标。
  4. 我还没有完成一些更精细的操作细节,但这就是它的要点。所有事情都被认为是一种hacky方式,但鉴于没有其他方法可以做到这一点,我认为这是可以接受的。

    Fluffy App(用C#编写)使用Spifftastic方法定位托盘图标。我假设关于透明窗口的部分是他们如何实现这一点,但我还没有反编译并检查他们的系统。

答案 1 :(得分:1)

由于QSystemTrayIcon是QObject,而不是QWidget,我的猜测是不可能的。 Qt并不真正拥有系统托盘图标 - 它被传递到'桌面',即Gnome / KDE / Windows / Mac的任何部分都在绘制相关区域。至少在Mac上,你会掉到菜单栏上,这将是一个非常奇怪的用户界面。对于Gnome和KDE来说,这是一个FreeDesktop.org标准,但我再也不认为你的过程实际上是绘图,因此Qt无法获得诸如拖放等事件。