有关 Qt 子控件 ignore() 了事件之后父控件却没有接收到传来的事件的问题

1.可以看见 ,按钮的父对象是主窗口

1 //初始化按钮                
2 butt.setText("按钮");    
3 butt.setParent(this);  

2.按钮点击后将会关闭自己

//绑定信号和槽                              
connect(&butt,&MyButton::pressed,this,
[=]() mutable {                       
    butt.close();                     
});      

3.按钮捕捉到关闭事件时会 ignore 掉

//覆写按钮关闭事件处理函数
void MyButton::closeEvent(QCloseEvent *e)
{
    //测试是否捕捉到事件
    qDebug() << "按钮捕捉到事件,指针是:"<<e<<endl;

    //拒绝关闭事件在该控件处执行 ,并把事件对象指针放行至主窗口
    e->ignore();

    qDebug() << "当前放行状态:" << e->isAccepted() << endl;
}

4.主窗口会接收传来的关闭事件

//覆写主窗口关闭事件处理函数
void MainWindow::closeEvent(QCloseEvent *e)
{
    //测试是否捕捉到事件
    qDebug() << "窗口捕捉到事件,指针是:"<<e<<endl;
    //承认事件
    e->accept();
}

运行程序后 ,点击按钮 ,发现每次点击时按钮都会捕捉到事件 ,同时显示事件是放行状态 ,但是主窗口却根本捕捉不到关闭事件 。我亲自点击主窗口的红叉之后才显示主窗口捕捉到关闭事件。


//覆写按钮关闭事件处理函数
void MyButton::closeEvent(QCloseEvent *e)
{
     QPushButton::closeEvent(e);  //加上这个试试
    //测试是否捕捉到事件
    qDebug() << "按钮捕捉到事件,指针是:"<<e<<endl;
 
    //拒绝关闭事件在该控件处执行 ,并把事件对象指针放行至主窗口
    e->ignore();
 
    qDebug() << "当前放行状态:" << e->isAccepted() << endl;
}

QPushButton::closeEvent(e); //ignore之前 加上这个试试

为啥要用事件呢? 在按钮的槽函数直接调主窗口的close不就可以了吗