文章目录
- 一、概念
- (一)Qt工具
- 1. Assistant:帮助手册
- 2. Designer:Qt设计师
- 3. xxx.uic文件
- 4. rcc资源文件
- 5. moc:元对象编译器
- 6. qmake
- 7. Qtcreator:集成化的开发软件
- (二)创建第一个Qt程序
- 1. 参考文档
- 2. 影子构建
- 3. xxx.pro
- 4. main.cpp
- 5. xxx.h
- 6. xxx.cpp
- (三)工程文件说明
- (四)Qt标准类库
- 1. 标签类:QLabel
- 2. 按钮类
- 3. 编辑框
- 二、 信号和槽机制
- (一)使用
- 1. 设计界面
- 2. 使用提供的信号函数和槽函数
- (1)
- (2)通过函数实现
- (二)自定义信号和槽
- 1. 自定义信号和槽
- 2. 使用示例
- (三)信号函数与槽函数总结
一、概念
Qt是一个跨平台的基于C++图形用户界面应用程序开发框架
(一)Qt工具
1. Assistant:帮助手册
2. Designer:Qt设计师
通过设计师生成的文件的后缀名为xxx.ui
3. xxx.uic文件
将ui界面编译成C++的文件格式
4. rcc资源文件
5. moc:元对象编译器
信号和槽
6. qmake
xxx.pro文件生成
7. Qtcreator:集成化的开发软件
(二)创建第一个Qt程序
1. 参考文档
2. 影子构建
3. xxx.pro
4. main.cpp
5. xxx.h
6. xxx.cpp
(三)工程文件说明
(四)Qt标准类库
1. 标签类:QLabel
2. 按钮类
3. 编辑框
二、 信号和槽机制
信号和槽机制是一种手段,是一种通信机制,发生子两个组件或者两个组件以上的通信;
信号和槽本质上就是函数,因此可以称为信号函数和槽函数
可以使用提供的信号函数和槽函数,也可以使用自定义的信号函数和槽函数
提供的信号函数通过‘转到槽’进行选择即可,但是提供的槽函数需要自定义;
(一)使用
1. 设计界面
- 需求:有两个按钮,一个按钮负责关闭label控件,另一个负责关闭父窗口
- 将需要的组件拖到工作区
- 修改要修改的组件属性:
修改组件objectName、文本、字体和大小
修改父窗口大小
修改标题windowTitle - 布局(美观)
2. 使用提供的信号函数和槽函数
(1)
第一步:设计界面下方
第二步:添加信号和槽
(2)通过函数实现
(二)自定义信号和槽
1. 自定义信号和槽
-
自定义信号函数
自定义的信号函数只有声明,没有定义
emit 自定义的信号函数 -
自定义槽函数
自定义的槽函数既要声明也要定义
返回值类型
- 用于信号函数和槽函数连接:connect
- 用于信号函数和槽函数断开:disconnect
[static]
2. 使用示例
- 注:
(三)信号函数与槽函数总结
1.信号函数和槽函数的形参类型和个数要求一致(使用比较多)
QObject::connect(发送者,SIGNAL(on_custom_signals()),接收者,SLOT(on_custom_slot())); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals(int)),接收者,SLOT(on_custom_slot(int))); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals(int,char)),接收者,SLOT(on_custom_slot(int,char))); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals(int,char)),接收者,SLOT(on_custom_slot(char,char))); //error
2.信号函数的参数个数可以比槽函数的形参个数多(使用比较少)
QObject::connect(发送者,SIGNAL(on_custom_signals(int,int)),接收者,SLOT(on_custom_slot(int))); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals(int)),接收者,SLOT(on_custom_slot(int,int))); //error
3.槽函数的形参个数一般不可以比信号函数多
如果槽函数的形参个数比信号函数的形参个数多,可以给槽函数的形参添加缺省值
QObject::connect(发送者,SIGNAL(on_custom_signals(int)),接收者,SLOT(on_custom_slot(int,int))); //error
//想要上面的连接函数成立的话,必须要给槽函数的形参添加缺省值
QObject::connect(发送者,SIGNAL(on_custom_signals(int)),接收者,SLOT(on_custom_slot(int,int = 缺省值))); //ok
4.一个信号函数可以对应多个槽函数(使用比较多)
QObject::connect(发送者,SIGNAL(on_custom_signals()),接收者,SLOT(on_custom_slot1())); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals()),接收者,SLOT(on_custom_slot2())); //ok
5.多个信号函数可以对应同一个槽函数(使用比较多)
QObject::connect(发送者,SIGNAL(on_custom_signals1()),接收者,SLOT(on_custom_slot())); //ok
QObject::connect(发送者,SIGNAL(on_custom_signals2()),接收者,SLOT(on_custom_slot())); //ok