Tôi biết có rất nhiều câu hỏi liên quan đến quản lý bộ nhớ qt nhưng tôi không thể tìm thấy câu trả lời cho tôi. Vì vậy, đối với các tiện ích qt, nếu bạn vượt qua điều này (là phụ huynh) làm tham số tại tạo đối tượng, tiện ích con sẽ sở hữu nó và xóa nó khi cha mẹ chết. Điều tương tự cũng xảy ra khi bạn thêm tiện ích vào bố cục và đặt bố cục đó trên tiện ích.Quản lý bộ nhớ Qt cho các đối tượng Qt
Nhưng điều gì sẽ xảy ra nếu tôi khai báo con trỏ với đối tượng QColor chẳng hạn? Không thể thêm QColor làm con cho một tiện ích con khác hoặc không thể thêm vào bố cục. Bộ nhớ sẽ được phát hành khi widget bị chết hoặc tôi cần phải xóa nó bằng tay trong destructor?
Đây là ví dụ ... điều gì xảy ra với m_pColor khi Widget sẽ bị hủy? Nó sẽ bị phá hủy hoặc sẽ có một rò rỉ bộ nhớ? Xin lỗi vì bất kỳ lỗi nào trong mã, tôi không biên dịch nó, tôi chỉ viết nó ở đây làm ví dụ.
#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);
}