当前位置: 代码迷 >> QT开发 >> QT中,关闭窗口时的有关问题
  详细解决方案

QT中,关闭窗口时的有关问题

热度:119   发布时间:2016-04-25 05:05:25.0
QT中,关闭窗口时的问题
本人在制作一个文本编辑器,想模仿gedit关闭时的功能,即在文本修改后,点窗口的关闭按钮,会弹出要求用户保存的信息。
具体如图:


我在QT里写了一个
connect(qApp,SIGNAL(aboutToQuit()),this,SLOT(MyProgramClose()));
来捕获关闭信号,在MyProgramClose函数中,加入一个保存的对话框。如果选择取消时,应该是不关闭主程序窗口,但是我发现,保存对话框是出来了,主程序窗口也没有了。
MyProgramClose函数如下:
C/C++ code
        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里的操作不正确?希望各位高人们指点指点!!

------解决方案--------------------
建议override editor的closeEvent事件函数

------解决方案--------------------
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

  相关解决方案