Qt、wxWidgets等控件编程的一个问题

adream307 2009-07-04 11:07:29
举例说明:

class FindDialog : public QDialg
{
Q_OBJECT
public:
......
private:
QLabel * linelabel;
......
};

FindDialog : FindDialog()
{
...
linelabel = new QLabel(tr("hello world!"));
....
}

但是没写FindDialog的析构函数,也就是没有显示的调用

delete linelabel;

书上是这样说的:由于在创建这个对话框中的窗口部件和布局时使用的是new,所以需要写一个能够调用delete的析构函数,以便可以删除所创建的每一个窗口布局和布局。但是这样做并不是必需的,因为Qt会在删除父对象的时候自动删除其所属的所有子对象,也就会删除FindDialog中作为其子孙的所有子窗口部件和子布局。
我想知道它的自动删除时如何实现的,能否举个简单的例子实现一下,就是 class A,class B 这样。
好像不仅仅Qt这样,在 C++ 的控件编程中,如 MFC、wxWidgets,都有这个现象,就是在父类中new 一个新的类,而在父类的析构函数中不显示调用delete删除这个,而这个new 出来的东东会被自动删除
谢谢!
...全文
147 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
prhanxben 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 loaden 的回复:]

wxWidgets也如此:这个不用你担心,凡是从wxWindow继承的类,都会自动delete的,不用你delete了。
程序库本身有个枚举,在父类析构时,将delete掉所有new的子类。
[/Quote]

那么请问是只有从wxWindow继续的类会自动delete,还是所有在主程序(比如wxFrame)中new的对象都会被delete呢?
比如我在 Frame中new了一个非布局显示用的类,比如数组wxArray类,那么这个对象会不会自动delete呢?
老邓 2009-07-05
  • 打赏
  • 举报
回复
wxWidgets也如此:这个不用你担心,凡是从wxWindow继承的类,都会自动delete的,不用你delete了。
程序库本身有个枚举,在父类析构时,将delete掉所有new的子类。
adream307 2009-07-05
  • 打赏
  • 举报
回复
这个源码可大可大了,不知道从哪入手。刚接触Qt
taodm 2009-07-05
  • 打赏
  • 举报
回复
貌似wx是可以载到全套源码的,自己下了研究研究嘛。
adream307 2009-07-05
  • 打赏
  • 举报
回复
没人理我,可怜的娃呀!!!

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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