gpt4 book ai didi

qt - 在 qt 应用程序中使用 closeEvent 不会关闭它

转载 作者:行者123 更新时间:2023-12-02 08:07:33 27 4
gpt4 key购买 nike

我正在学习 qt,并尝试教科书中的示例。

原始教科书代码如下,设置为保存并在x按钮上关闭:

void MainWindow::closeEvent(QCloseEvent *event)
{
if (okToContinue()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}

我在菜单中尝试了一个简单的退出 - 它有效:

void MainWindow::close()
{
if (okToContinue()) {
QApplication::quit();
}
}

但是我想利用已经写好的closeEvent,所以我将上面的代码替换为

void MainWindow::close()
{
QCloseEvent *event = new QCloseEvent();
closeEvent(event);
}

我检查更改并保存应用程序,通过 okToContinue 函数实现。但应用程序不会关闭。

我试图进行调试,并且......以我的一点理解,似乎正在发送一个关闭信号......

我对此不太了解,有人可以帮我弄清楚我做错了什么以及如何解决它吗?

(示例代码来自《使用 Qt 4 进行 C++ GUI 编程》,第 3 章)

最佳答案

您不必在子类中重新实现 MainWindow::close()。来自 Qt 文档:

...QCloseEvent sent when you call QWidget::close() to close a widget programmatically...

所以如果你想控制这个事件,你只需要重新实现 MainWindow::closeEvent(QCloseEvent *event) 即可。

当您单击 x 或从代码中调用 close() 时,会触发此事件。

关于qt - 在 qt 应用程序中使用 closeEvent 不会关闭它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191954/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com