我知道有很多关于 qt 内存管理的问题,但我找不到我的答案。
因此,对于 qt 小部件,如果您在创建对象时将 this(它是父小部件)作为参数传递,则父小部件将获得它的所有权并在父小部件死亡时将其删除。当您将小部件添加到布局并在小部件上设置该布局时,也会发生同样的事情。
但是如果我声明一个指向 QColor 对象的指针会发生什么?QColor 不能作为另一个小部件的子级添加,也不能添加到布局中。当小部件死亡或我需要在析构函数中手动删除它时,内存会被释放吗?
这是一个例子......当 Widget 被销毁时,m_pColor 会发生什么?它会被破坏还是会出现内存泄漏?对不起,代码中的任何错误,我没有编译它,我只是把它写在这里作为例子。
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
class QHBoxLayout;
class QPushButton;
class QColor;
class Widget : public QWidget
{
Q_OBJECT
public:
Widget( QWidget *parent = NULL );
public:
QHBoxLayout *m_pLayout;
QPushButton *m_pButton;
QColor *m_pColor;
};
#endif // WIDGET_H
#include "widget.h"
#include <QHBoxLayout>
#include <QPushButton>
#include <QColor>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
m_pLayout = new QHBoxLayout;
m_pButton = new QPushButton( tr( "Button" ) );
m_pLayout->addWidget( m_pButton );
m_pColor = new QColor(0, 0, 0, 255);
setLayout( m_pLayout );
}