怎么在widget外(程序外)捕捉鼠标事件
如何在widget外(程序外)捕捉鼠标事件?如题,我想捕捉任意一点的鼠标坐标和鼠标事件,但是鼠标一移出widget的
如何在widget外(程序外)捕捉鼠标事件?
如题,我想捕捉任意一点的鼠标坐标和鼠标事件,但是鼠标一移出widget的外面mouseMoveEvent等事件就无效了。
程序主要代码如下:
ps:在Qt api中说使用QAbstractEventDispatcher能接收到系统的消息,但我测试了下,也只限于鼠标出现在widget内。
main.cpp:
C/C++ codebool myEventFilter(void *msg){ LPMSG lpmsg = (LPMSG)msg; qDebug()<<lpmsg->message; return false;}int main(int argc, char *argv[]){ QApplication a(argc, argv); CursorTest w; w.show(); QAbstractEventDispatcher *ap = QAbstractEventDispatcher::instance(); ap->setEventFilter(myEventFilter); return a.exec();}
cursortest.cpp:
CursorTest::CursorTest(QWidget *parent)
: QWidget(parent)
{
setMouseTracking( true );
}
CursorTest::~CursorTest()
{
}
void CursorTest::mouseMoveEvent(QMouseEvent *e){
qDebug()<<e->globalPos();
}
该如何做才能捕捉到widget外的鼠标事件?
[解决办法]焦点不在widget,事件根本不会发送给widget。
甚至app都不会收到。因为那可能是给系统/桌面/其他app的。。
可能要用系统API捕获了。
[解决办法]void QWidget::grabMouse ()
捕获鼠标,其它程序不能接收鼠标事件。
[解决办法]可能楼主是想达到hook的那种效果,关注一下。
[解决办法]把窗口的属性设为Qt::Popup,鼠标移出窗体时但是窗体依然能捕获到鼠标消息
[解决办法]调用WINDOW函数吧,QT本人身是做不到的