1 创建第一个 Qt 程序
1.1 点击创建项目后,选择项目路径以及给项目起名称
1.2 名称 - 不能有中文 不能有空格
1.3 路径 - 不能有中文路径
1.4 创建默认有窗口类, myWidget,基类有三种选择:QWidget 、QMainWindow、QDialog
1.5 main 函数
1.5.1 QApplication a ; 应用程序对象,有且仅有一个
1.5.2 myWidget w; 实例化窗口对象
1.5.3 w.show(); 调用show函数,显示窗口
1.5.4 return a.exec(); 让应用程序对象进入消息循环机制中,代码阻塞到当前行
2 按钮控件常用 API
2.1 创建 QPushButton * btn = new QPushButton;
2.2 设置父类 setParent(this);
2.3 设置文本 setText("文字");
2.4 设置位置 btn->move(宽,高);
2.5 重新指定窗口大小 resize();
2.6 设置窗口标题 setWindowTitle();
2.7 设置窗口固定大小 setFixedSize();
3 对象树
3.1 当创建的对象在堆区的时候, 如果指定的父亲是 QObject 派生下来的类或者 QObject 子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。
3.2 一定程度上简化了内存回收机制
4 Qt 坐标窗口
以左上角为原点(0,0),X向右增加,Y向下增加。
5 信号和槽(Slots)
5.1 连接函数:connect()
5.2 参数
5.2.1 参数1 信号的发送者
5.2.2 参数2 发送的信号(函数的地址)
5.2.3 参数3 信号的接收者
5.2.4 参数4 处理的槽函数
5.3 松散耦合
5.4 实现 点击按钮关闭窗口的案例
//connect(myBtn, &MyPushButton::clicked, this, &myWidget::close);
connect(myBtn, &QPushButton::clicked, this, &QWidget::close);
6 自定义信号和槽
6.1 自定义信号
6.1.1 返回值 void
6.1.2 需要声明,不需要实现
6.1.3 可以有参数,可以重载
6.1.4 写到 signals 下
6.2 自定义槽函数
6.2.1 返回值 void
6.2.2 需要声明,也需要实现
6.2.3 可以有参数,可以重载
6.2.4 写到 public slot 下或者 plblic 或者 全局
7 当自定义信号和槽出现重载
7.1 需要利用函数指针,明确指向函数的地址
7.2 void(Teacher:: *tSignal)(QString) = &Teacher::hungry;
7.3 QString 转正 char *
7.3.1 .toUtf8() 转为 QByteArray
7.3.2 .data() 转为 char *
7.4 信号可以连接信号
7.5 断开信号 disconnect(); 参数:与 connect 无差别
8 拓展
8.1 信号可以连接信号
8.2 一个信号可以连接多个槽函数
8.3 多个信号可以连接同一个槽函数
8.4 信号和槽函数的参数 必须类型一一对应
8.5 信号和槽的参数个数:信号的参数个数优于(>=)槽函数的参数
8.6 信号槽可以断开连接 disconnect
9 Qt4 版本
9.1 connect( 信号的发送者,发送的信号 SIGNAL(信号),信号接收者,槽函数SLOT(槽函数) );
9.2 优点:参数直观
9.2 缺点:编译器不会检测函数类型
10 Lambda 表达式:[](){}
10.1 [] 标识符 匿名函数
10.1.1 = 值传递
10.1.2 & 引用传递
10.2 () 参数
10.3 {} 实现体
10.4 mutable 修饰 值传递变量,可以修改拷贝出的数据,改变不了本体
10.5 返回值 例:int ret = []()->int{return 1000;};
10.6 lambda 表达式 最常用 [=](){}