Qt 4.4:禁用小部件接收鼠标事件

时间:2011-12-11 21:15:21

标签: qt mouseevent qwidget

正如标题所示,是否有一种方法可以让禁用的小部件接收鼠标事件?

我正在使用QWidget::setEnabled()来更改小部件的外观,但我仍然希望收到他们的鼠标事件。在此先感谢:)

1 个答案:

答案 0 :(得分:3)

您可以使用相关小部件上的事件过滤器执行此操作。见QObject::eventFilter()。您的实现可能如下所示:

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);
    }
}

即使按钮被禁用,这也会有效。