QT學習(三)事件過濾器

在設計的過程中遇到了一個問題,我在派生類裏重載了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);
}

這樣在運行的時候就解決了上述問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章