Qt鼠标事件的问题
我的mainwindow中有三个子窗口tableview、menubar、toolbar和一个成员变量窗口(QGraphicsView,他不能事mainwindow的子窗口,原因就不细说了)。现在我想让鼠标移到成员变量窗口QGraphicsView的时候它就是activateWindow,移到其它地方的时候mainwindow就是activateWindow。于是我用了以下方法:
1,view->setMouseTracking(true);
this->setMouseTracking(true);
使可以捕捉未按下键的移动事件
2,重写mainwindow的mousemoveEvent
里面加上语句:this->activateWindow();
3,安装事件管理器,tableview->installEventFilter(this);
4,重写eventFilter(QObject *target, QEvent *event)函数
if(target==view)
if(event->type()==QEvent::MouseMove)
view->activateWindow();
补充一下:QGraphicsView被我设置成永远在顶层Qt::WindowStaysOnTopHint
意思就是上面说的,代码是从整个程序中抽出与这个问题有关的部分。
遇到的问题是运行效果没想象中的好,偶尔active的关系也会改变,但是规律并不是我想要的那样。是哪里出了问题,该怎么解决呢?是不是跟接收鼠标事件的顺序有关,两个重叠的窗口,一前一后,谁接收事件呢,是active的接收,还是一定是前面的接收?
[解决办法]
两个窗口重叠和谁先接受信号没关系 单纯实现这个功能的话很简单 可以重写leaveEvent( QEvent* ) 和enterEventl( QEvent* )在他们里边设置就可以了