Search code examples
qtmouseeventqwidget

Qt 4.4: disabled widgets receiving mouse events


As the title suggests, is there a way for a disabled widget to receive mouse events?

I'm using QWidget::setEnabled() for changing the appearance of widgets but I still want to receive their mouse events. Thanks in advance :)


Solution

  • You can do this with an event filter on the widget in question. See QObject::eventFilter(). Your implementation might look something like this:

    bool MainWindow::eventFilter(QObject *obj, QEvent *event)
    {
        if (ui->pushButton)
        {
            if (event->type() == QEvent::MouseButtonRelease)
            {
                qDebug() << "mouse button";
                return true;
            } else
            {
                return false;
            }
        } else
        {
            // pass the event on to the parent class
            return QMainWindow::eventFilter(obj, event);
        }
    }
    

    This will work even if the button is disabled.