关闭事件不起作用?

时间:2013-08-15 09:14:25

标签: 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) {
        QApplication::quit();
        e->accept();
    } else {
        e->ignore();
        hide();
    }
}

哪个确实有效,但恕我直言,即使是第一个也应该工作。为什么它不起作用?

“doest not work”我的意思是应用程序没有关闭:/它只是继续运行。

1 个答案:

答案 0 :(得分:0)

我认为 Jarvis 继承了QWidget。

然后你应该将事件传递给QWidget类,如下所示:

void Jarvis::closeEvent(QCloseEvent *e)
{
    if (m_doQuit) {
        QWidget::closeEvent(e);
    } else {
        e->ignore();
        hide();
    }
}

简单地接受该活动将无济于事。也许你可以在第二种情况下接受这个事件,因为你 以某种方式对它作出反应。即使你没有关闭......但这是有原因的。