代码之家  ›  专栏  ›  技术社区  ›  Glenn Nelson

Qt托盘图标拖放

  •  6
  • Glenn Nelson  · 技术社区  · 14 年前

    有人知道是否可以使用qt在托盘图标上拖放吗?

    2 回复  |  直到 14 年前
        1
  •  6
  •   Glenn Nelson    14 年前

    我一直在做一些研究,我想到的是:

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

    1. 创建一个唯一的彩色图标 并将其作为图标 给它一个截图。
    2. 既然你知道颜色 图标的顺序,您可以 搜索屏幕截图并 找到特定图标 位置。
    3. 一个透明的小部件被定位 在图标上,用作 删除目标。

    我还没有对手术的一些细节进行研究,但这就是手术的要点。所有的事情都认为这是一种下流的方式,但考虑到没有其他的方法可以做到这一点,我认为这是可以接受的。

    fluffy应用程序(用c_编写)使用spifftastic方法定位托盘图标。我假设关于透明窗口的部分是它们如何完成的,但是我还没有对它们的系统进行反编译和检查。

        2
  •  1
  •   James Turner    14 年前

    因为qSystemTrayIcon是一个QObject,而不是一个QWidget,我猜这是不可能的。系统托盘图标不是Qt真正拥有的-它被传递到“桌面”,即gnome/kde/windows/mac的任何部分都在绘制相关区域。至少在Mac上,你会看到菜单栏,这将是一个非常奇怪的用户界面。对于gnome和kde来说,这是一个freedesktop.org标准,但我又不认为这是你真正绘制的过程,因此qt没有办法得到像拖放这样的事件。