• 5472阅读
  • 4回复

[提问]把Mainwindow的closeEvent()重新编写为一个空函数,为什么还照样能关闭窗口呢? [复制链接]

上一主题 下一主题
离线ll5152003
 
只看楼主 倒序阅读 楼主  发表于: 2013-12-18
把Mainwindow的closeEvent()事件处理器重新编写为一个空函数,为什么还照样能关闭窗口呢?
在我看来,closeEvent()事件处理器的工作就是把MainWindow窗口隐藏(或者销毁),但我重写定义了closeEvent(),函数里面什么也没写,没有任何代码.我想再点叉叉的时候肯定MainWindow窗口不会有任何反应,但没想到,窗口照样关闭了.这是为什么呢?难道我新定义的closeEvent()压根就没执行?
离线lsk569937453

只看该作者 1楼 发表于: 2013-12-18
,closeEvent()是虚函数,窗口的关闭响应是在mainWindow的父类中实现的。你不写东西,并不能阻止窗口的关闭。建议看看虚函数
sdadsadad
离线ll5152003
只看该作者 2楼 发表于: 2013-12-18
回 1楼(lsk569937453) 的帖子
可是我定义这个函数了啊,只不过这个虚函数我重新定义成为了空函数.难道定义成函数体为空的空函数,也会执行其父类的closeEvent()??
离线friendbaby

只看该作者 3楼 发表于: 2013-12-18
回 2楼(ll5152003) 的帖子
closeEvent()函数并不执行关闭窗口的操作,而是询问用户是否关闭。
如果用户不想关闭窗口,需要调用函数 QCloseEvent::ignore (),默认的是accept,所以如果不在函数中不做任何处理,窗口会关闭
Smiling is best language , can express everything , also can conceal everything.
离线wenl

只看该作者 4楼 发表于: 2013-12-19
3楼正解!
快速回复
限100 字节
 
上一个 下一个