• 6716阅读
  • 9回复

为何在父窗口hide()时调用QMessageBox后选择确定后程序自动关闭了? [复制链接]

上一主题 下一主题
离线prout
 
只看楼主 倒序阅读 楼主  发表于: 2010-02-28
为何在父窗口hide()时调用QMessageBox后选择确定后程序自动关闭了?

而在父窗口show()的时候QMessageBox可以正常使用?
离线prout
只看该作者 1楼 发表于: 2010-03-02
没人理解么?
离线benbenmajia

只看该作者 2楼 发表于: 2010-03-02
到底是关闭了还是hide了?
请贴代码
安然.....
离线prout
只看该作者 3楼 发表于: 2010-03-02
引用第2楼benbenmajia于2010-03-02 11:37发表的  :
到底是关闭了还是hide了?
请贴代码



class CatchWindow : public QWidget


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    
    CatchWindow catchWindow;
//    catchWindow.show();
     //这个时候没有让它show(),也就是说这个时候catchWindow是隐藏的

    return a.exec();
}


void CatchWindow::showHelpDlg()
{
     QMessageBox::information(this,"Help",
         "Tip:Use hot key to catch desktop image(Ctrl + Alt + C by default)");
}


当调用showHelpDlg槽时显示QMessageBox,这时候关闭QMessageBox就终止了整个Application的进程
离线benbenmajia

只看该作者 4楼 发表于: 2010-03-02
hide()不是这么hide()的,你查查看用户手册
安然.....
离线sbtree
只看该作者 5楼 发表于: 2010-03-02
在你的主程序代码中加上a.setQuitOnLastWindowClosed(false)就不会退出了
windows 7 + VC++2008 + Qt4.5.2
离线prout
只看该作者 6楼 发表于: 2010-03-02
引用第5楼sbtree于2010-03-02 16:50发表的  :
在你的主程序代码中加上a.setQuitOnLastWindowClosed(false)就不会退出了


好的,谢谢。问题解决了。

像这种类似的问题我除了问还有更好的解决方法么?

您是如何找到这个函数的呢?
离线午小夜

只看该作者 7楼 发表于: 2010-03-02
看manual....QApplication  class.
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
离线prout
只看该作者 8楼 发表于: 2010-03-02
引用第5楼sbtree于2010-03-02 16:50发表的  :
在你的主程序代码中加上a.setQuitOnLastWindowClosed(false)就不会退出了


另外在调用过QMessageBox后,qApp调用quit()时会出现中断错误 指向crt0dat.c文件的

                        onexitbegin_new = (_PVFV *)_decode_pointer(__onexitbegin);
                        onexitend_new = (_PVFV *)_decode_pointer(__onexitend);
为何?

谢谢
离线prout
只看该作者 9楼 发表于: 2010-03-02
但是多编译了两遍问题又消失了,奇怪~~
快速回复
限100 字节
 
上一个 下一个