Qt 关闭事件不工作?
好的,那么为什么这个代码不起作用Qt 关闭事件不工作?,qt,qtgui,Qt,Qtgui,好的,那么为什么这个代码不起作用 void Jarvis::closeEvent(QCloseEvent *e) { if (m_doQuit) { e->accept(); } else { e->ignore(); hide(); } } m_doQuit是真的,我查过了 目前我正在使用 void Jarvis::closeEvent(QCloseEvent *e) { if (m_doQuit) {
void Jarvis::closeEvent(QCloseEvent *e)
{
if (m_doQuit) {
e->accept();
} else {
e->ignore();
hide();
}
}
m_doQuit是真的,我查过了
目前我正在使用
void Jarvis::closeEvent(QCloseEvent *e)
{
if (m_doQuit) {
QApplication::quit();
e->accept();
} else {
e->ignore();
hide();
}
}
这确实管用,但即使是第一个我也应该管用。为什么它不起作用
“doest not work”指的是应用程序没有关闭:/It只是继续运行。我假设Jarvis继承了QWidget
然后您应该像这样将事件传递给QWidget类:
void Jarvis::closeEvent(QCloseEvent *e)
{
if (m_doQuit) {
QWidget::closeEvent(e);
} else {
e->ignore();
hide();
}
}
简单地接受这个事件是没有用的。也许你可以接受第二种情况下的事件,因为你对它有某种反应。即使你不关闭。。。但这是有原因的。你能具体说明“不工作”或“确实工作”是什么意思吗?我修改了我的问题,为什么你认为在第一种情况下应用程序应该关闭?嗯。。我可以在closeEvent方法中中止关闭事件,对吗?我认为关闭事件是在应用程序关闭时发出的..+如果我删除我的方法,它将按预期工作(应用程序终止),可能您没有注释
QApplication::setQuitOnLastWindowClosed(false)代码>.Jarvis继承QMainWindow。。因此,我尝试将QMainWindow::closeEvent(e)放在那里,但没有帮助。。