2013-01-25 57 views
0

我在Qt5.0中,我已經安裝了一個事件過濾器監聽單一的鼠標點擊,看起來像這樣的應用程序:對由Qt5.0事件鼠標點擊事件過濾器多次調用過濾

bool MainView::eventFilter(QObject *obj, QEvent *event) 
{ 
if (event->type() == QEvent::MouseButtonPress) 
    { 
    QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event); 
    int mx=mouseEvent->pos().x(),my=mouseEvent->pos().y(); 

    qDebug() << QString::number(mx)<<" "<<QString::number(my); 
... 
} 
} 

每當我點擊時,函數會被多次調用,並且它會返回一個寬範圍的數值,通常與實際值相差大約+/- 50。任何人都可以請解釋爲什麼這可能會發生,或者如果有人遇到類似的問題。事件過濾器已作爲qApp-> installEventFilter(this)安裝在構造函數中;

回答

4

如果事件沒有被對象處理過,它會傳播到對象的父對象等等。這就是爲什麼你抓幾個鼠標事件。

而且你總是可以得到什麼樣的對象是由事件過濾器觀看視頻:

bool MainView::eventFilter(QObject *obj, QEvent *event) 
{ 
    ... 
    qDebug() << obj->metaObject()->className(); 
    ... 
} 
+0

謝謝!修復了它.. – doomguy