【问题标题】:Qt Tray Icon Drag and DropQt托盘图标拖放
【发布时间】:2011-04-30 00:11:23
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    1. 您创建了一个颜色独特的图标 并将其放置为简短的图标 拍一张截图。
    2. 鉴于您知道颜色 图标的顺序,你可以 搜索屏幕截图和 找到特定图标的 位置。
    3. 放置了一个透明小部件 在图标上方并用作 放下目标。

    我还没有处理一些更精细的操作细节,但这就是它的要点。所有事情都认为这是一种 hacky 方式,但鉴于没有其他方法可以做到这一点,我认为这是可以接受的。

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

    【讨论】:

      【解决方案2】:

      由于 QSystemTrayIcon 是 QObject,而不是 QWidget,我猜这是不可能的。系统托盘图标并不真正归 Qt 所有 - 它被传递到“桌面”,即 Gnome/KDE/Windows/Mac 的任何部分正在绘制相关区域。至少在 Mac 上,您会掉到菜单栏上,这将是一个非常奇怪的 UI。对于 Gnome 和 KDE,它是 FreeDesktop.org 的标准,但我不认为它实际上是由您的进程来执行绘图的,因此 Qt 无法获取诸如拖放之类的事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 2011-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多