• 3356阅读
  • 1回复

Qt控件编程的一个问题 [复制链接]

上一主题 下一主题
离线adream307
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-05
举例说明:
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中作为其子孙的所有子窗口部件和子布局。(Qt4,第二版14页)
我想知道它的自动删除时如何实现的,能否举个简单的例子实现一下,就是 class A,class B 这样。
好像不仅仅Qt这样,在 C++ 的控件编程中,如 MFC、wxWidgets,都有这个现象,就是在父类中new 一个新的类,而在父类的析构函数中不显示调用delete删除这个,而这个new 出来的东东会被自动删除
谢谢!
离线adream307

只看该作者 1楼 发表于: 2009-07-06
没人理我呀,可怜的娃呀!!!
自己给自己会一个!!!
快速回复
限100 字节
 
上一个 下一个