【发布时间】:2011-04-30 00:11:23
【问题描述】:
有谁知道是否可以使用 Qt 拖放托盘图标?
【问题讨论】:
标签: c++ qt qt4 drag-and-drop
有谁知道是否可以使用 Qt 拖放托盘图标?
【问题讨论】:
标签: c++ qt qt4 drag-and-drop
我一直在做一些研究,这是我想出的:
QSystemTrayIcon 无法显式处理拖放事件。但是,有一个基于 Spifftastic 托盘图标定位方法的解决方法。
我还没有处理一些更精细的操作细节,但这就是它的要点。所有事情都认为这是一种 hacky 方式,但鉴于没有其他方法可以做到这一点,我认为这是可以接受的。
Fluffy App(用 C# 编写)使用 Spifftastic 方法来定位托盘图标。我假设关于透明窗口的部分是他们如何实现的,但我还没有反编译和检查他们的系统。
【讨论】:
由于 QSystemTrayIcon 是 QObject,而不是 QWidget,我猜这是不可能的。系统托盘图标并不真正归 Qt 所有 - 它被传递到“桌面”,即 Gnome/KDE/Windows/Mac 的任何部分正在绘制相关区域。至少在 Mac 上,您会掉到菜单栏上,这将是一个非常奇怪的 UI。对于 Gnome 和 KDE,它是 FreeDesktop.org 的标准,但我不认为它实际上是由您的进程来执行绘图的,因此 Qt 无法获取诸如拖放之类的事件。
【讨论】: