gpt4 book ai didi

c++ - 我必须删除这些指针吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:11 25 4
gpt4 key购买 nike

这是我调用并使用函数 show() 使其对用户可见的 MainWindow 类。

class MainWindow : public QMainWindow
{
Q_OBJECT

QWidget *centralWidget;
QGridLayout* gridLayout;
QGridLayout* infoBoxLayout;
QHBoxLayout* buttonGroup;
QHBoxLayout* subCategoryLayout;
//... more widgets

public:
MainWindow(QWidget *parent = 0);
~MainWindow();

void setupUi();
void setupConnections();

private slots:
void add();
void edit();
void remove();
void find();
void clearAll();
void screenshotDesktop();
void screenshotApp();

void currentSubCategoryChanged( const QString& );
void curretCategoryChanged( const int );

void keyPressEvent( QKeyEvent * );

};

我用 new 在堆上为每个小部件(宏 Q_OBJECT 之后的那些指针)创建了一个新对象。但是,我没有在程序的任何地方删除它们。这会导致 Qt 中的内存泄漏吗?或者在销毁类(class)时 Qt 中的某些东西会自动删除它们吗?

最佳答案

如果一个小部件有父集,那么 Qt 将处理删除该小部件。对于 MainWindow,当您关闭它时,MainWindow 及其子窗口将被清理,因此将父窗口传递给小部件的构造函数:-

QHBoxLayout* buttonGroup = new QHBoxLayout(this); // where this is the parent (MainWindow)

如果您创建这样的小部件:-

QHBoxLayout* buttonGroup = new QHBoxLayout;

而且还没有传入父级,那么它不会被清理,你必须自己处理。

关于c++ - 我必须删除这些指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com