我正在学习qt,并试验教科书中的例子.
原始教科书代码具有以下内容,设置为保存并关闭x按钮:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (okToContinue()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}
Run Code Online (Sandbox Code Playgroud)
我在其菜单中尝试了一个简单的退出 - 它的工作原理如下:
void MainWindow::close()
{
if (okToContinue()) {
QApplication::quit();
}
}
Run Code Online (Sandbox Code Playgroud)
但我想利用已经编写的closeEvent,所以我用上面的代码替换了
void MainWindow::close()
{
QCloseEvent *event = new QCloseEvent();
closeEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
我通过okToContinue函数实现了检查更改和保存应用程序.但应用程序没有关闭.
我试图通过调试和...我的小理解,似乎有一个关闭信号被发送...
我对此没有很好的理解,有人可以帮我弄清楚我做错了什么以及如何解决它?
(示例代码来自C++ GUI Programming with Qt 4,第3章)
您不必在子类中重新实现MainWindow :: close().来自Qt Docs:
...当您调用QWidget :: close()以编程方式关闭窗口小部件时发送的QCloseEvent ...
因此,如果要控制此事件,则必须重新实现MainWindow :: closeEvent(QCloseEvent*event).
单击x或从代码中调用close()时会触发此事件.
| 归档时间: |
|
| 查看次数: |
5071 次 |
| 最近记录: |