Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 关闭事件不工作?_Qt_Qtgui - Fatal编程技术网

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)放在那里,但没有帮助。。