逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::
应用程序中只有唯一一个QDialog,如果点击它上面的关闭按钮,或者调用了reject(),accept()方法,那么QApplication的事件循环就会结束,让整个应用程序退出。
但是有时候,例如一个程序,没有界面,只有右下角的任务栏上有一个图标,右击图标弹出菜单,可以进行设置。如设置参数时,会创建一个QDialog窗口,设置完成后,这个窗口被关闭,这时整个程序就会退出了。为了解决这一问题。可以重写closeEvent()函数,如下:
void SetupDialog::closeEvent(QCloseEvent *e) {
    e->ignore();
    reject();
}
这样,如果有确定按钮或者取消按钮时,他们相对应的slot中调用close()方法去关闭窗口,至于在closeEvent函数中使用reject()还是accpet()函数,使用自己设定的一个标志来判断就可以了,关键在于()e->ignore()这个函数的调用。
posted on 2010-04-16 21:26 逛奔的蜗牛 阅读(3304) 评论(3)  编辑 收藏 引用 所属分类: Qt

评论

# re: Qt:关闭唯一的主窗口,让QApplication的event loop不退出 2010-05-04 00:50 MorrisLiang
可以试一下QWidget定义的hide()  回复  更多评论
  

# re: Qt:关闭唯一的主窗口,让QApplication的event loop不退出 2010-05-04 00:53 逛奔的蜗牛
@MorrisLiang
如果只是隐藏了窗口, 窗口所占用的资源是不会释放的. 所以要通过各种手段来减少程序所占资源, 而不是只让用户看不到窗口.  回复  更多评论
  

# re: Qt:关闭唯一的主窗口,让QApplication的event loop不退出 2015-08-26 15:29 Biao
app.setQuitOnLastWindowClosed(false);  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理