event 捕获的只是Qt能够处理的时间, 你说的事件需要用这个函数捕获
bool Application::winEventFilter ( MSG * msg, long * result )
这样需要继承Application
我参考了下Qt的源代码文件:qsystemtrayicon_win.cpp文件,写了个测试程序
#include <qt_windows.h>
#include <QApplication>
class Application : public QApplication
{
Q_OBJECT
public:
Application(int &argc, char **argv)
:QApplication(argc, argv)
{
}
bool winEventFilter ( MSG * msg, long * result ){
if(msg->message == WM_APP + 101)
{
//鼠标在图标上的hover事件, to do something
qDebug("hover...");
}
return QApplication::winEventFilter(msg, result);
}
};
但是鼠标的enter,hover,leave 事件都会执行注释处的代码,这个问题很难解决, 你可以参考下这篇文章:
http://www.vbgood.com/thread-97218-1-1.html