QT中,关闭窗口时的问题

鯎鯎 2011-05-17 05:32:20
本人在制作一个文本编辑器,想模仿gedit关闭时的功能,即在文本修改后,点窗口的关闭按钮,会弹出要求用户保存的信息。
具体如图:


我在QT里写了一个
connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(MyProgramClose()));
来捕获关闭信号,在MyProgramClose函数中,加入一个保存的对话框。如果选择取消时,应该是不关闭主程序窗口,但是我发现,保存对话框是出来了,主程序窗口也没有了。
MyProgramClose函数如下:

QMessageBox msgBox;
msgBox.setText("The document has been modified.");
msgBox.setInformativeText("Do you want to save your changes?");
msgBox.setStandardButtons(QMessageBox::SaveAll | QMessageBox::Discard | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::SaveAll);
int ret = msgBox.exec();
switch (ret) {
case QMessageBox::SaveAll:
break;
case QMessageBox::Discard:
break;
case QMessageBox::Cancel:
return;
break;
default:
break;
}


不知道是我获取关闭信号获取错了,还是我在Cancel里的操作不正确?希望各位高人们指点指点!!
...全文
1100 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
donwmufromdying 2011-08-30
  • 打赏
  • 举报
回复
1楼建议override editor的closeEvent事件函数
wangshaner1 2011-08-30
  • 打赏
  • 举报
回复
一楼正解……
geyunfa 2011-05-21
  • 打赏
  • 举报
回复
closeEvent事件中做处理
鯎鯎 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dbzhang800 的回复:]

引用 3 楼 bakasen 的回复:

引用 1 楼 zhh_steven 的回复:

建议override editor的closeEvent事件函数

editor是指哪个,是指我自己的文本编辑框吗?不好意思,我对QT不是十分了解。

你当前的顶级窗口

另外:注意
QTabWidget::tabCloseRequested ( int index )
以及
vo……
[/Quote]
QTabWidget::tabCloseRequested ( int index ) ,我是有注意。
如果要重写closeEvent,应该要继承主程序的类吗??
void QApplication::commitData ( QSessionManager & manager )
又要怎么注意??不好意思,我这些不怎么懂。
dbzhang800 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bakasen 的回复:]

引用 1 楼 zhh_steven 的回复:

建议override editor的closeEvent事件函数

editor是指哪个,是指我自己的文本编辑框吗?不好意思,我对QT不是十分了解。
[/Quote]
你当前的顶级窗口

另外:注意
QTabWidget::tabCloseRequested ( int index )
以及
void QApplication::commitData ( QSessionManager & manager )
鯎鯎 2011-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhh_steven 的回复:]

建议override editor的closeEvent事件函数
[/Quote]
editor是指哪个,是指我自己的文本编辑框吗?不好意思,我对QT不是十分了解。
zhh_kv 2011-05-17
  • 打赏
  • 举报
回复
connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(MyProgramClose()));
这样达不到你想要的效果;


help doc:

void QCoreApplication::aboutToQuit () [signal]
This signal is emitted when the application is about to quit the main event loop, e.g. when the event loop level drops to zero. This may happen either after a call to quit() from inside the application or when the users shuts down the entire desktop session.

The signal is particularly useful if your application has to do some last-second cleanup. Note that no user interaction is possible in this state

zhh_kv 2011-05-17
  • 打赏
  • 举报
回复
建议override editor的closeEvent事件函数

21,466

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧