zl程序教程

您现在的位置是:首页 >  工具

当前栏目

Qt使用事件过滤器时程序崩溃解原因及决办法(Qt中任意对象的事件过滤器都能将某一事件截住过滤掉)

Qt事件对象程序 原因 过滤 过滤器 任意
2023-09-11 14:16:44 时间

bool UserMainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->close_btn)
    {
        if(event->type() == QEvent::HoverEnter)
        {
            ui->close_btn->setStyleSheet("border-image:url(:/images/close2.png);");
            return true;
        }
        else if(event->type() == QEvent::Leave)
        {
            ui->close_btn->setStyleSheet("border-image:url(:/images/login_close.png);");
            return true;
        }
        else if(event->type() == QEvent::MouseButtonPress)
        {
            ui->close_btn->setStyleSheet("border-image:url(:/images/close1.png);");
        }
    }
    return QMainWindow::eventFilter(watched, event);
}

这个地方注意返回值,首先要返回true,在最后的返回值中,必须要返回它的父类的事件过滤器,我这里是mainwindow也就是QMainwindow::eventFilter