一、创建按钮及对应的内容
1、添加的代码一般都是写在源文件中对应的构造函数中
【注】有的时候new
的控件不显示,要注意是否在构造函数中new
的,在其它函数如自定义的函数中创建的控件需要调用show()
才能显示。
/*
* 在应用程序上创建一个按钮
* 一般代码会写在构造函数中
*/
#include "mywidget01.h"
#include<QPushButton> //要添加包含对应控件的头文件
myWidget01::myWidget01(QWidget *parent)
: QWidget(parent)
{
/* 第一种方式创建按钮 */
//创建一个按钮,即new一个对象
QPushButton *btn=new QPushButton();
// 显示该按钮,不应该使用show函数,因为show函数是顶层方式弹出控件
// 在此希望按钮是依附在窗口上,所以需要将该窗口设置为按钮的父对象
btn->setParent(this);
// 为该按钮添加文本内容
btn->setText("The First New Button");
/* 第二种方式创建按钮,更加简洁方便,但该方法窗口大小会
* 随着控件的大小变化,所以需要设置窗口尺寸 */
QPushButton *btn2=new QPushButton("The Second New Button",this);
btn2->move(100,60); //设置按你的坐标位置
//设置按钮的大小
btn2->resize(160,50);
//设置的窗口大小,用户可以通过拖动来进行动态调整
resize(600,500);
//设置窗口大小固定值,不可以调整
setFixedSize(600,500);
//设置窗口标题
setWindowTitle("应用界面");
}
myWidget01::~myWidget01()
{
}
2、运行结果如下
二、关于new
对象的释放问题:对象树
1、对象树
在QT
中可以通过对象树来管理new
对象的释放。在创建QObject
对象的时候,会看到QObject
的构造函数接收一个QObject
指针作为其参数,这个参数就是parent
,也就是父对象的指针。
相当于在创建QObject
对象时,提供其父对象,并且QObject
对象会被自动添加到父对象的children()
列表中。当父对象析构的时候,这个列表中所有对象都会被析构。(注:在此父对象不是继承意义上的父类)。
2、自定义按钮类
1)、首先添加新文件
2)、选择C++ class
3)、自定义类名,并选择基类为QWidget
4)、修改对应类的头文件和源文件
让头文件包含和继承自QPushButton
在源文件中添加调试信息
用自定义的类来创建按钮
运行结果如下:
调试信息如下:
【注:在此都是只有new
而没有delete
释放,是由于对象树中会自动释放其孩子列表中的对象】