0

好的,那么为什么这段代码不起作用?

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();
    }
}

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

“不起作用”是指应用程序没有关闭:/它只是继续运行。

4

1 回答 1

0

我假设Jarvis继承了 QWidget。

然后你应该像这样将事件传递给 QWidget 类:

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

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

于 2013-08-15T13:14:47.390 回答