创建按钮后,会将控件放入一个表中,当指定父亲后,都会对其释放进行管理,当父对象析构时,会将所有子对象都析构掉。
myWidget::myWidget(QWidget *parent): QWidget(parent)
{
//创建按钮
QPushButton *b = new QPushButton;
b->setParent(this);//令该窗口中有个按钮,传的是对象指针
b->setText("第一个按钮");
//创建第二个按钮,按照控件大小来创建窗口
QPushButton *b2 = new QPushButton("第二个按钮");//此时会覆盖第一个按钮
//移动第2个按钮,让其不要覆盖第一个按钮
b2->move(100, 100);
b2->setParent(this);
//重置窗口大小
this->resize(800, 800);
//设置固定的窗口大小
this->setFixedSize(400, 400);//防止用户自己更改 窗口大小
this->setWindowTitle("第一个窗口");
//创建自定义的按钮
MyPushButton *mb = new MyPushButton();//指定父类对象创建按钮
mb->setParent(this);//设置到对象树中
mb->setText("自定义按钮");
mb->move(300, 0);
}
自定义一个按钮,继承PushButton
class MyPushButton : public QPushButton
{
Q_OBJECT
public:
explicit MyPushButton(QWidget *parent = nullptr);//让某个窗口作为父
~MyPushButton();
signals:
};
构造函数析构函数定义:
MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{
qDebug()<<"构造函数运行";
}
MyPushButton::~MyPushButton()
{
qDebug()<<"析构函数运行";
}
运行结果:
当创建的对象在堆中,若指定的父亲是QObject派生类,可以自动回收空间