内存回收机制+字体乱码
F4快速进行切换
内存回收机制:https://blog.****.net/dashumak/article/details/78237553
构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。
以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
new之后如果不释放空间不会调用delete函数,QT会自动释放(析构)
#include "mywidget.h"
#include<QPushButton>
#include"mybutton.h"
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
/*对于父窗口(主窗口),坐标系统相对于屏幕而言
* 原点:相对于屏幕左上角
* x:往右递增
* y:往下递增
*/
move(500,100);
/*子窗口,坐标系统相对于父窗口而言
* 原点:相对于窗口空白区域左上角(不包括边框)
* x:往右递增
* y:往下递增
*/
//下面创建的两个按钮都是动态分配空间,所以要释放,否则会导致内存泄漏
QPushButton *b1=new QPushButton(this);
b1->move(100,100);
b1->setText("^_^");
b1->resize(200,100);
QPushButton *b2=new QPushButton(b1);
b2->move(10,10);
b2->setText("@[email protected]");
MyButton *b3 = new MyButton(this);
b3->setText("123");
//前提条件 1)指定父对象后 2)直接或间接继承与QObject
//子对象如果是动态分配空间的new,不需要手动释放delete
//系统会自动释放
}
MyWidget::~MyWidget()
{
}
如果不出现中文,