• 7243阅读
  • 6回复

问一下对话框销毁时,如何调用一个函数。 [复制链接]

上一主题 下一主题
离线vintx
 
只看楼主 倒序阅读 楼主  发表于: 2008-09-25
— 本帖被 XChinux 执行加亮操作(2008-09-25) —
我现在有一个问题,就是当一个对话框销毁时,自动在析构函数里写一些代码自动保存该程序里的一些参数信息。
我应该如何做?
离线sbtree
只看该作者 1楼 发表于: 2008-09-25
把函数定义成槽,用对话框的 destroyed()信号连接
windows 7 + VC++2008 + Qt4.5.2
离线vintx
只看该作者 2楼 发表于: 2008-09-25
谢谢!
离线vintx
只看该作者 3楼 发表于: 2008-09-26
我应该放在哪里

int main(int argc, char ** argv)
{
    QApplication app( argc, argv );
    LayerImpl win;
    win.show();
    app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
    app.connect(&win, SIGNAL(destroyed()), &win, SLOT(saveconf()));
    return app.exec();
}

这样没有反应。
离线lazybone
只看该作者 4楼 发表于: 2008-09-26
或者 重写对话框的 closeEvent() 方法
离线sbtree
只看该作者 5楼 发表于: 2008-09-26
建议saveconf()在其他对象里实现,因为destroyed()信号不会堵塞对象销毁,发出后该对象及其所有子对象会被立即销毁,所以如果把槽函数放在该对象中将无法被执行。
要保证槽函数在一个存在的实例对象中。
windows 7 + VC++2008 + Qt4.5.2
离线vintx
只看该作者 6楼 发表于: 2008-09-26
谢谢大家了。
我最后改成这样,就没有问题了。
int main(int argc, char ** argv)
{
    QApplication app( argc, argv );
    LayerImpl win;
    win.show();
    app.connect(&app, SIGNAL(lastWindowClosed()), &win, SLOT(saveconf()));
    return app.exec();
}

但不知道有没有其他安全问题,因为以前都是quit()退出函数,不知道这样关闭,会不会没有释放内存的。
快速回复
限100 字节
 
上一个 下一个