析构函数在Qt4 [英] destructors in Qt4

查看:127
本文介绍了析构函数在Qt4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很困惑在Qt4中使用析构函数,希望你们可以帮助我。

当我有一个这样的方法(Des是一个类):

  void Widget :: create(){
Des * test = new Des;
test-> show();
}

如何确保这个小部件将被删除




在类Des中我有这样的:

  Des :: Des()
{
QPushButton * push = new QPushButton(neu);
QHBoxLayout * layout = new QHBoxLayout;
layout-> addWidget(push);
setLayout(layout);
}

在哪里和如何删除* push和*应该在析构函数Des ::〜Des()?

解决方案

另一个选项使用 deleteLater ()或父母,是使用小部件的关闭时删除功能。在这种情况下,Qt会在显示完成后删除窗口小部件。

  Des * test = new Des; 
test-> setAttribute(Qt :: WA_DeleteOnClose);
test-> show();



我喜欢使用它与Qt保持的对象树,所以我设置delete-关闭窗口,并且窗口中的所有窗口小部件都指定了正确的父级,因此它们也都将被删除。


I'm very confused about using destructors in Qt4 and hope, you guys can help me.
When I have a method like this (with "Des" is a class):

void Widget::create() {
    Des *test = new Des;
    test->show();
}

how can I make sure that this widget is going to be deleted after it was closed?

And in class "Des" i have this:

Des::Des()
{
    QPushButton *push = new QPushButton("neu");
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(push);
    setLayout(layout);
}

where and how do I have to delete *push and *layout? what should be in the destructor Des::~Des() ?

解决方案

Another option to using deleteLater(), or parents, is to use the delete-on-close functionality for widgets. In this case, Qt will delete the widget when it is done being displayed.

Des *test = new Des;
test->setAttribute( Qt::WA_DeleteOnClose );
test->show();

I like to use it with the object tree that Qt keeps, so that I set delete-on-close for the window, and all widgets in the window have a proper parent specified, so they all get deleted as well.

这篇关于析构函数在Qt4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆