疑问:
QT中new出来的控件如果绑定了this指针(或者指定了父对象), 这个对象所占用的内存会不会跟随绑定父界面的关闭而释放呢?
在Qt中,如果你将一个动态创建(new
)的控件(如 QWidget
、QPushButton
等)绑定到父对象(通常通过 setParent(this)
或调用特定对象的构造函数时传入 this
作为父对象),那么该控件会在父对象被销毁时自动释放内存。
问题解答:
1. 父对象机制
-
在Qt中,QWidget及其子类(如QPushButton、QLabel等)以及其他QObject的子类(非窗口部件)都支持父对象机制。
-
当你调用
setParent(parent)
或通过构造函数传递parent
参数时,控件会被设置为该父对象的子对象。 -
父对象负责管理子对象的生命周期。当父对象被销毁时,所有的子对象会自动被销毁,并释放内存。
2. 示例代码
#include <QApplication>
#include <QPushButton>
#include <QWidget>
class MyWidget : public QWidget {
public:
MyWidget() {
// 创建一个按钮并绑定到当前窗口(this