C++11新特性
nullptr 空指针
auto 自动类型
Lamda表达式 匿名函数
for each 新循环遍历方式
Lamda表达式定义函数语法:
[可访问外部变量](参数)->返回值{函数体}
[变量名1,变量名2.....](){} 指定部分变量访问
[=](){} 值传递形式捕获外部所有变量 (内部无法改变实际变量)
[&](){} 引用形式捕获外部所有变量 (内部可以改变实际变量)
一、常用按钮控件
1.创建 QPushButton *btn = new QPushButton;
2.设置父亲 setParent();
3.设置文本 setText();
4.设置窗口大小 resize();
5.设置标题 setWindowTitle();
6.设置固定大小 setFixedSize();
7.设置位置 move();
二、QT对象树介绍 对象树:QT中的类的继承关系,有一定程度上简化了对象释放操作。由QT的QObject类派生出来的类,无需手动释放堆内存 添加到QObject或QObject派生类的对象的子成员时,也无需手动释放,程序结束时QT会自动检测对象树的对象 ,释放对象前,先释放子对象,从而一层一层的最终释放完毕。
// 设置一个按钮
// 鼠标 按下 打印申闹被打了
// 鼠标 抬起 打印申闹反抗了
auto btnMouse = new QPushButton("申闹",this);
btnMouse->move(300,0);
//当按钮点击时
connect(btnMouse,&QPushButton::pressed,[]()->void{
qDebug()<<"老鼠被打了";
});
//抬起时
connect(btnMouse,&QPushButton::released,[]()->void{
qDebug()<<"申闹反抗了";
});
三、信号(Signal)和槽(Slot)
信号和槽:是QT框架引以为豪的东西 实际上就是观察者模式,一种简易方式。
使用connect函数,可以为信号以及槽建立好连接,当信号广播(触发)时,槽作出相应的处理。
信号来自于被观察者 槽来自于观察者
用法1:connect(被观察者,信号,观察者,槽);
用法2:connect(被观察者,信号,Lamda表达式匿名函数);
用法3:connect(被观察者,SIGNAL(信号函数),观察者,SLOT(槽函数));//老版本用法
Signal(信号):函数声明,无需实现。系统大多数类,都内置了信号,开发者也可以自定义信号。
Slot(槽):本质就是个函数,一般是类的成员函数。有声明且有实现体。系统大多数类,都内置了槽,开发者也可以自定义槽。
代码示例:
//最大化按钮(被观察者)
auto btnMax = new QPushButton("最大化",this);
//this窗口 观察者
//建立信号和槽连接
connect(btnMax,&QPushButton::clicked,this,&QWidget::showMaximized);
auto btnMaxOld = new QPushButton("Old最大化",this);
connect(btnMaxOld,SIGNAL(clicked()),this,SLOT(showMaximized()));



