在設計的過程中遇到了一個問題,我在派生類裏重載了mousemoveevent,程序運行時,發現點擊這個派生類時,主窗口也會接收到這個事件。
解決方法:在定義的派生類中添加事件過濾器,接收到mousemoveevent事件後就將其處理不讓其繼續向下傳遞。
以下爲代碼:
先註冊事件過濾器:
this->installEventFilter(this);
因爲想要過濾的控件註冊,因爲我這裏是對這個類進行過濾故用this
然後就是重載eventFilter
bool eventFilter(QObject *target,QEvent *event);
bool Animationbutton::eventFilter(QObject *target,QEvent *event)
{
if (target==this)
{
if (event->type()==QEvent::MouseMove)
{
mouseClicked();
return true;
}
else
return false;
}
else
return QWidget::eventFilter(target,event);
}
這樣在運行的時候就解決了上述問題。