void Widget::closeEvent(QCloseEvent *event) { qDebug()<<"close event"; QString title="消息框"; QString str="是否退出"; QMessageBox::StandardButton result=QMessageBox::question(this,title,str, QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel); if (result==QMessageBox::Yes) { event->accept(); } else { event->ignore(); } QWidget::closeEvent(event); } 这段代码ignore()为什么不管用
时间: 2024-01-22 09:03:58 浏览: 83
PyQt5 closeEvent关闭事件退出提示框原理解析
在这段代码中,ignore()函数是用来忽略事件的,也就是说,如果调用了ignore()函数,那么事件就会被忽略掉,不会被处理。但是,在这个closeEvent函数中,如果调用了ignore()函数,那么窗口就不会被关闭,因为ignore()函数只是忽略了事件,但并没有关闭窗口。
如果你想要关闭窗口,需要调用event->accept()函数,这个函数会接受事件,并且会关闭窗口。所以,如果你想要关闭窗口,应该将代码修改为:
```cpp
if (result==QMessageBox::Yes)
{
event->accept();
}
else if (result==QMessageBox::No)
{
event->ignore();
}
else
{
QWidget::closeEvent(event);
}
```
这样,当用户点击“是”按钮时,就会关闭窗口;当用户点击“否”按钮时,就会忽略事件,不会关闭窗口;当用户点击“取消”按钮时,就会调用QWidget::closeEvent()函数,关闭窗口。
阅读全文