• 5012阅读
  • 5回复

close问题~麻烦各位过来看一下~ [复制链接]

上一主题 下一主题
离线yu_beck
 

只看楼主 倒序阅读 楼主  发表于: 2008-07-15
close问题~麻烦各位过来看一下~
— 本帖被 XChinux 执行加亮操作(2008-07-17) —
...
void ProjectSelect::exit()
{
    this->close();
    ((QMainWindow*)(this->parent()))->close();
}

我这段代码的目的是关闭子窗口的同时,也关闭他的父亲窗口。但是,上述代码执行过后,出现一个问题:app.exe无法结束,依然在运行中。我该怎末解决这个问题呢?烦请各位帮帮忙哈~谢谢
离线lzian
只看该作者 1楼 发表于: 2008-07-15
reject()
离线yu_beck

只看该作者 2楼 发表于: 2008-07-15
引用第1楼lzian于2008-07-15 16:59发表的  :
reject()


3ks,Lzian。可是我试了下,我的parent类型是QMainWindow,而QMainWindow是没有reject()这个方法的。
离线lzian
只看该作者 3楼 发表于: 2008-07-16
Qt中,如果关闭一个窗口,他会将其所有子窗口关闭。
close()只是发送一个关闭事件,然后将窗口隐藏。具体的执行是QWidget::closeEvent()。
建议你重新设计你的程序结构,不要在子窗口中关闭父窗口。
用父窗口接受子窗口关闭的信号,再退出的方法。
离线yu_beck

只看该作者 4楼 发表于: 2008-07-16
lzian,谢谢,我再想想~
离线weizhy
只看该作者 5楼 发表于: 2008-07-17
最狠的莫过于直接用:
QApplication::exit(0);

不过后果自负,呵呵

最根本的解决方案还是lzian说得方法,
像你原来代码那样的,子窗口关闭父窗口,则父窗口类有两个可以改变自己的手段,违反了面向对象的封装原则,稳定性肯定是无法保证的
快速回复
限100 字节
 
上一个 下一个