同名文件之间切换的快捷键:F4;
查看帮助文档:去安装目录下的bin/assistant.exe;
1、优点:
(1)跨平台
(2)效率高
(3)嵌入式
(4)市场份额好
应用场景:
(1)linux桌面环境 KDE
(2)WPS
(3)谷歌地图
(4)屏幕共享
(5)VLC播放器
2、QT项目文件目录
.pro文件
2.1 QT+= 所属模块 widget 版本以上
2.2 TARGET 生成.exe程序名称
2.3 TEMPLATE app 应用程序模板
2.4 SOURCE HEADER 源文件 头文件
3、main函数
3.1 QApplication a 应用程序对象 有且仅有一个
3.2 a.exec() 进行消息循环 阻塞
3.3 MyWidget w 窗口对象
3.4 默认不会弹出窗口 想要显示窗口 需要调用 show
4、QPushButton
4.1 QPushButton * btn = new QPushButton;
4.2 btn->setParent(this) 设置父亲
4.3 btn->setText (“aaa”)
4.4 btn->move( x, y)
4.5 重置窗口大小 resize(w,h)
4.6 重置窗口标题 setWindowTitle(“aaaa”)
4.7 设置固定窗口大小 setFixedSize(w,h)
QPushButton的两种创建方式:
QPushButton * btn = new QPushButton; 头文件 #include <QPushButton> //设置父亲 btn->setParent(this); //设置文字 btn->setText("德玛西亚"); //移动位置 btn->move(100,100); //第二种创建 QPushButton * btn2 = new QPushButton("孙悟空",this); //重新指定窗口大小 this->resize(600,400); //设置窗口标题 this->setWindowTitle("第一个项目"); //限制窗口大小 this->setFixedSize(600,400);
5、对象树
5.1 所有new出来的对象 不用管释放
5.2 原因 children表中的对象会在窗口关闭后进行自动释放
对象树的图示:
6、Qt中坐标系
6.1坐标系:
以左上角为原点(0,0),X向右增加,Y向下增加。
如下图所示:
7、Qt中的信号和槽
7.1 需求 点击按钮 关闭窗口
7.2 connect(信号发送者,发送的信号,信号接受者,处理槽函数)
7.3 优点 松散耦合
8、Qt自定义信号和槽
8.1 自定义信号:
8.1.1 返回值 void
8.1.2 需要声明 不需要实现
8.1.3 可以有参数
自定义信号和槽的整个过程:
首先定义一个学生类和老师类: 老师类中声明信号 饿了 hungry signals: void hungury(); 学生类中声明槽 请客 treat public slots: void treat(); 在窗口中声明一个公共方法下课,这个方法的调用会触发老师饿了这个信号,而响应槽函数学生请客 void MyWidget::ClassIsOver() { //发送信号 emit teacher->hungury(); } 学生响应了槽函数,并且打印信息 //自定义槽函数 实现 void Student::eat() { qDebug() << "该吃饭了!"; } 在窗口中连接信号槽 teacher = new Teacher(this); student = new Student(this); connect(teacher,&Teacher::hungury,student,&Student::treat); 并且调用下课函数,测试打印出 “该吃饭了”
8.2 自定义槽函数
8.2.1 返回值void
8.2.2 需要声明 需要实现
8.2.3 可以有参数
8.3 触发自定义的信号
8.3.1 emit
8.4 当自定义信号和槽 出现重载时候,原先写法失效,因为执行的函数地址不明确
8.5 解决方法: 利用函数指针 来明确指向哪个函数的地址
自定义的信号 hungry带参数,需要提供重载的自定义信号和 自定义槽 void hungury(QString name); 自定义信号 void treat(QString name ); 自定义槽 但是由于有两个重名的自定义信号和自定义的槽,直接连接会报错,所以需要利用函数指针来指向函数地址, 然后在做连接 void (Teacher:: * teacherSingal)(QString) = &Teacher::hungury; void (Student:: * studentSlot)(QString) = &Student::treat; connect(teacher,teacherSingal,student,studentSlot);
8.6 QString转char* toUtf8 转 QBtyeArray 类型 在利用data 转成char*
qDebug()<<"treat myteacher eat.."<<foodName.toUtf8().data();
9、 信号和槽的拓展
9.1 信号是可以连接信号的
9.2 信号和槽可以断开 disconnect
9.3 一个信号可以连接多个槽函数
9.4 多个信号可以连接同一个槽函数
9.5 信号和槽函数的个数必须一一对应
9.6 信号的参数个数 可以大于槽函数的参数个数 ,反之不可以
10、Qt4版本信号槽写法(以及缺陷)
10.1 信号: SIGNAL下
10.2 槽: SLOT下
10.3 优点: 参数直观 不用写函数指针
10.4 缺点:不会做类型检测
11、Lambda表达式
11.1 [](){}
11.2 []内部 = 值传递 推荐 &引用传递 不推荐
11.3 ()参数
11.4 {} 函数实现体
11.5 mutable改变值传递的内部变量
11.6 返回值 []() -> type { return 返回值};