首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

deleteLater函数和通用的delete有何区别?解决思路

2012-01-18 
deleteLater函数和通用的delete有何区别?SMSUIMessageEditor在一个地方new出来,但这个new出来的对象,却不

deleteLater函数和通用的delete有何区别?
SMSUIMessageEditor在一个地方new出来,但这个new出来的对象,却不是用delete来销毁的。用了个看不懂的deleteLater。

deleteLater、delete这两者有什么区别呢?

C/C++ code
m_pMessageEditor = new SMSUIMessageEditor (this);void SMSUIMainDlg::onCloseNewMsgDialog (){    qDebug ("%s: %s: Entered", __FILE__, __FUNCTION__);    QObject* pObj = QObject::sender ();    if (NULL == pObj)    {         qDebug ("%s: %s: %s %d pObj is NULL ", _TIME_, __FILE__, __FUNCTION__, __LINE__);        return;    }        SMSUIMessageEditor *pDlg = qobject_cast<SMSUIMessageEditor *>(pObj);    if (NULL != pDlg)    {        pDlg->m_pwidgetcreateDlg->deleteLater ();        pDlg->deleteLater ();    }    qDebug ("%s: %s: Exit", __FILE__, __FUNCTION__);}


[解决办法]
据说是因为对象可能在事件循环中存在 不能直接删 而是往消息循环中投递一个消息安全的删除 不然假如还有针对那对象的消息而对象被销毁了的话程序就崩溃了
[解决办法]
就是让窗口在不用后自己手动调用delete删除,

热点排行