首页 > 技术文章 > QPushButton注册事件过滤器后按钮消失

dachen408 2017-07-18 09:50 原文

版权声明:本文为博主原创文章,转载需要注明出处。

RT,代码如下:

ui.btn_set->installEventFilter(this);

 

bool MousrHoverTest::eventFilter(QObject * watched, QEvent * event)
{
    if (watched == ui.btn_status)
    {
        QHoverEvent *eve = (QHoverEvent*)event;
        if (eve->type() == QEvent::HoverEnter)
        {
            ui.widget->show();
        }
        else if (eve->type() == QEvent::HoverLeave)
        {
            ui.widget->hide();            
        }
        return true;
    }
    return QWidget::eventFilter(watched, event);
}

原因:eventFilter的实现的最后必须调用watcher基类的eventFilter函数以传递事件。 如果不调的话watcher的所有事件都将丢失。

解决:去掉return true;

推荐阅读