QT 信号槽机制
所有从 QObject 或其子类 ( 例如 Qwidget) 派生的类都能够包含信号和槽
(使用情况:类需要继承自QObject,并且在类的开头声明Q_OBJECT宏)
QT信号槽->类似于观察者模式
在信号被发送出来以后,会有对其感兴趣得槽去connect。槽函数自动触发。
QT自带得槽函数:
按钮等控件有自带得signals,从帮助文档中即可查看。例如:QPushButton::clicked
自定义信号槽:
注意使用条件。
1.自定义一个信号
class{
siganls:
void xxxx(); // 可以带参
}
2.自定义一个槽函数
3.connect 链接
4.emit 信号
关于connect的书写格式(QT5--c++11)
QObject::connect(&newspaper,
static_cast<void (Newspaper:: *)(const QString &, const QDate &)>(&Newspaper::newPaper),
&reader,
&Reader::receiveNewspaper); // 红体字部分是信号带参的参数类型,这种写法可以有效解决QT5信号槽有重载的情况
关于connect第五个参数
如果是在同一线程
里面的操作(signal
和slot
都在同一个线程),那么用Qt::DirectConnection
的效率最高(使用默认值Qt::AutoConnection
也OK),主要是Qt::DirectConnection
和Qt::QueuedConnection
都需要储存到队列。
如果是多个线程之间
进行消息传递(signal
和slot
都在不同线程),那么就要用到Qt::QueuedConnection
或者Qt::BlockingQueuedConnection
,不过一个是无阻塞的(Qt::QueuedConnection
),一个是阻塞的(Qt::BlockingQueuedConnection
,发送消息后会阻塞,直到所有的slot
都被执行)。
原文地址:https://www.cnblogs.com/xcn-img/p/15129315.html
- Android网络编程(二)HttpClient与HttpURLConnection
- Spring Batch入门篇
- Android网络编程(三)Volley用法全解析
- Android网络编程(八)源码解析OkHttp中篇[复用连接池]
- Mybatis SqlSessionTemplate 源码解析
- MapperScannerConfigurer处理过程源码分析
- Spring Boot中使用Actuator的/info端点输出Git版本信息
- Spring Batch:文件的批量读写Flatfile(XML,CSV,TXT)
- 项目本机部署过程中的若个问题
- Android View体系(十一)自定义ViewGroup
- Java并发编程(四)Java内存模型
- Android View体系(十)自定义组合控件
- 算法(一)时间复杂度
- Android Studio详细安装流程和配置、主题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法