Alex Rivera | Logout

Ignore mouse and keyboard events in Qt

Asked 2010-02-04T22:25:25.087
12

In Qt, how can I ignore all mouse and keyboard events and later stop ignoring them? That is: click a button, ignore all events in children; click again, not ignore. Is that clear? I have the following lines, but maybe I'm doing something wrong:

setAttribute(Qt::WA_TransparentForMouseEvents);

setFocusPolicy(Qt::NoFocus);
Edit
Report

1 Answer

9

You can use Events' filters on your mouse and keyboard events to filter some keypress or mouseclick when you need so :

yourWidget->installEventFilter(this);

...

bool YourFrm::eventFilter(QObject* pObject, QEvent* pEvent)
{
    if (pEvent->type() == QEvent::KeyPress) 
    {
        QKeyEvent* pKeyEvent = static_cast<QKeyEvent*>(pEvent);
        int PressedKey = pKeyEvent->key();

        if(PressedKey == Qt::Key_Return)
        {
            // Filter Return key....
            return true;
        }

        // standard event processing
        return QObject::eventFilter(pObject, pEvent);
    }
    else if (pEvent->type() == QEvent::MouseButtonPress) 
    {
        QMouseEvent* pMouseEvent = static_cast<QMouseEvent*>(pEvent);

        ... // etc...
    }
    else 
    {
        // standard event processing
        return QObject::eventFilter(pObject, pEvent);
    }
}

More informations on this : http://qt.nokia.com/doc/4.6/eventsandfilters.html

Hope it helps !

answered 2010-02-05T06:29:50.680

Your Answer