一.按钮
1.按钮属性的设置
创建按钮的方法一:
//在窗口中添加按钮
QPushButton *button = new QPushButton;
//另外创建一个窗口显示按钮
//button->show();
//在当前窗口中显示按钮
button->setParent(this);
//**************按钮属性的设置*************
//设置按钮的内容
button->setText("第一个按钮");
//设置按钮的显示位置
button->move(100,100);
//设置按钮的大小
button->setFixedSize(100,100);
呈现的效果:
创建按钮的方法二:
QPushButton *button = new QPushButton("第二个按钮",this);
两个方法的区别:
- 方法一窗口为默认大小,按钮显示在左上角
- 窗口是根据按钮的大小来创建的
2.对象树
用来表示Qt对象间父子关系,在Qt中每一个QObject对象(包括其子类)都有一个子对象列表
特点有:
- 用来表示组件间的包含关系:如窗口中的按钮,窗口就是父,按钮就是子
- 当父对象析构的时候,在子对象列表中的所有对象都会被析构
- 在一定程度上解决了内存问题,简化内存回收
3.Qt窗口坐标体系
其Qt图形化界面都是以左上角为原点,向右为x轴,向下为y轴
二.信号和槽机制
- 当发生某件事时会发出一个信号,其信号是广播形式发出,
- 当每个对象对其信号感兴趣是会接受其信号,并触发某种动作,其动作就是槽
- 可以将该事件和该对象使用连接函数进行绑定
1.连接函数
//参数含义:信号发出者,信号,信号接受者,接受信号后的动作
connect(sender,signal,receiver,slot)
2.自定义信号和槽
步骤:
- 确定场景
- 创建自定义信号发出类和信号接受类
- 在发出类中声明信号(可以只声明),在信号接受类中声明槽函数并实现
- 信号声明在signals中,槽可以一般声明在public slots,也可以声明在public或者全局中
- 创建发出类的对象和接受类的对象,创建连接
- 使用emit关键字发出信号
举例:
#include <QDebug>
//发出信号的类
class Teacher :public QObject
{
Q_OBJECT
public:
explicit Teacher(QObject *parent = 0);
signals:
void hungury();
public slots:
}
//接受信号的类
class Student :public QObject
{
Q_OBJECT
public:
explicit Student (QObject *parent = 0);
signals:
public slots:
void treat();
}
void Student::treat(){
qDebug()<<"请老师吃饭";
}
//触发函数
void ClassOver(){
//使用emit关键词发出信号
emit teacher->hungury();
}