• 8478阅读
  • 6回复

[提问]请问如何自定义系统关闭按钮的事件 [复制链接]

上一主题 下一主题
离线shiziyang
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-15
我的程序里有一个关闭菜单实现了自定义的关闭槽事件,包括弹一个对话框询问是否关闭程序,然后我想用户在点击系统标题栏关闭按钮和系统任务栏的右键菜单关闭项时也关联到该槽事件,不执行它默认的关闭事件,这应该要怎么做?
尝试过在closeevent中直接调该槽函数,不走下去,不过这样在系统关机和注销时会堵在那里,不知有没有其它方法。
离线benbenmajia

只看该作者 1楼 发表于: 2012-05-15
QApplication ::quit()
安然.....
离线shiziyang

只看该作者 2楼 发表于: 2012-05-15
回 1楼(benbenmajia) 的帖子
要怎么样才能用过这个函数调到我的槽函数并保持程序不立即退出呢?
离线benbenmajia

只看该作者 3楼 发表于: 2012-05-15
这本身就是QAPP的槽函数。
你想做出什么样子的效果
安然.....
离线shiziyang

只看该作者 4楼 发表于: 2012-05-15
简单来说就是我想把系统的关闭菜单(或按钮)的事件换成我自己的函数,除了在closeevent中动手还有什么方法
离线roywillow

只看该作者 5楼 发表于: 2012-05-15
总之要重写closeEvent事件处理函数
在里面对QCloseEvent *进行accept()还是ignore()
比如:
  1. void MainWindow::closeEvent(QCloseEvent *event)
  2. {
  3.     if (okToContinue())
  4.     {
  5.         event->accept();
  6.         saveNote();
  7.         saveSettings();
  8.     }
  9.     else
  10.         event->ignore();
  11. }

其中okToContinue()就是一个调用了询问对话框的函数
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线shiziyang

只看该作者 6楼 发表于: 2012-05-16
回 5楼(roywillow) 的帖子
哦,那果然还是要这样啊,我们那里因为一些原因不让用exec弹对话框,都用open,没法堵在if那里,看来也只能这样了。
快速回复
限100 字节
 
上一个 下一个