在程序中怎么获取标题栏右上角的"退出按钮"消息

windtalker_spike 2010-07-02 02:20:13
当我们运行一个程序时,在标题栏右上角有一个系统的退出按钮,我们点击它后可以退出程序。我现在想在退出之前加一个对话框,询问一下用户是否要退出程序。

请问一下在程序中怎么才能获取这个要退出程序的消息呀,如果有例子的话那就更好了, 谢谢
...全文
224 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlackRose 2010-07-05
  • 打赏
  • 举报
回复
closeEvent(QCloseEvent *event)
{
if(...)
{
doSomething();
event->accept();
}
else
{
doAnother();
event->ignore();
}
}
巴依老爷 2010-07-05
  • 打赏
  • 举报
回复
新建一个QT GUI工程,测试MainWindow的closeEvent,看成功否
windtalker_spike 2010-07-05
  • 打赏
  • 举报
回复
我是重写了一下closeEvent, 然后我在里面也加了log,但点退出按钮后还根本没有这个函数里的log出现
MicroSky2813 2010-07-02
  • 打赏
  • 举报
回复
重写closeEvent方法可以
windtalker_spike 2010-07-02
  • 打赏
  • 举报
回复
我重载一下void VideoEditor::closeEvent(QCloseEvent *event),但点那个退出按钮没有进入这个函数呀

class VideoEditor : public HbMainWindow
{
Q_OBJECT

public:
VideoEditor(QWidget *parent = 0);
~VideoEditor();

protected:
void closeEvent(QCloseEvent *event);

........
}
windtalker_spike 2010-07-02
  • 打赏
  • 举报
回复
恩,我去试一下看,谢谢了
windtalker_spike 2010-07-02
  • 打赏
  • 举报
回复
呵呵,我刚才问的就是怎么才能获得退出时发出的消息, 我现在不清楚要怎么去获得它
ilovevc709 2010-07-02
  • 打赏
  • 举报
回复
迟了点。
楼上正解。
ilovevc709 2010-07-02
  • 打赏
  • 举报
回复
connect( pWnd, SIGNAL(closing()), this, SLOT(WndClose()) );

pWnd 是主窗体,
然后在槽中弹出对话框就可以了。不过这种方法无法根据对话框返回控制是否关闭。

另一种方法是重写QWidget的closeEvent函数。
如果想关闭,就accept,否则就ignore,很灵活。
巴依老爷 2010-07-02
  • 打赏
  • 举报
回复
需要重写closeEvent方法:
void MainWindow::closeEvent(QCloseEvent *event)
{
if (maybeSave()) {
writeSettings();
event->accept();
} else {
event->ignore();
}
}
jinjianxinxh 2010-07-02
  • 打赏
  • 举报
回复
我也是正在学习qt,以前作的是gtk的程序,在gtk下处理过类似的东东,我想原理都是一样的吧,你可以监听你退出的那个信号,进行一个判断,至于具体的我也没有写过,不好意思。你可以写个demo试一下
windtalker_spike 2010-07-02
  • 打赏
  • 举报
回复
楼上的可以说的详细一点不,能有例子就更好了,我是QT新人,很多东西都还在学习中.....
jinjianxinxh 2010-07-02
  • 打赏
  • 举报
回复
你可以在那个接收的槽里面对他进行处理阿,这个应该很简单的吧
windtalker_spike 2010-07-02
  • 打赏
  • 举报
回复
我试过了closeApp()这个函数,没有被调用到过

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧