Qt信号阻塞和断开信号槽
Qt信号阻塞和断开信号槽
Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理。
1. 阻塞方法
bool QObject::blockSignals(bool block)
Qt描述:阻塞模式下,这个对象发送的信号都会被阻塞,解除阻塞后则不再阻塞。返回值为之前状态的阻塞情况。
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). If block is false, no such blocking will occur. The return value is the previous value of signalsBlocked().
void MainWindow::changeLeft()
{
ui->spinBox_ROI_01->blockSignals( TRUE );
ui->spinBox_ROI_01->setText( rot13( right->text() ) );
ui->spinBox_ROI_01->blockSignals( FALSE );
}
即:在上述的过程中,设置spinBox的signal都会阻塞。
2. 断开信号槽方法
bool QObject::disconnect(const QObject * sender, const char * signal, const QObject * receiver, const char * method)
Qt描述:disconnect将断开sender和receiver,成功返回true。
Disconnects signal in object sender from method in object receiver. Returns true if the connection is successfully broken; otherwise returns false.
有下面3中特殊用法:
a. 断开所有连接到某一对象的信号槽:(这个和阻塞的功能类似)
disconnect(myObject, 0, 0, 0);
//等价于:
myObject->disconnect();
b. 断开所有连接到某一信号的信号槽:
disconnect(myObject, SIGNAL(mySignal()), 0, 0);
// 等价于:
myObject->disconnect(SIGNAL(mySignal()));
c. 断开两个对象之间的所有信号槽关系:
disconnect(myObject, 0, myReceiver, 0);
// 等价于:
myObject->disconnect(myReceiver);
不难发现,这里的“0”就代表:所有 (any)。
使用disconnect可以实现精准的信号槽断开操作,不过对于需要大范围的断开,使用阻塞还是比较方便。
Qt信号阻塞和断开信号槽相关推荐
- Qt核心特性之 —— 「信号(Signal)与槽(Slot)」机制
目录 1.Qt 与 Qt Creator简介: 2.关于引用头文件的一些事儿: 3.信号(Signal)与槽(Slot)机制: 3.1.一个小例子: 4.自定义信号与槽: 4.1.运行效果: 5.信号 ...
- Qt断开信号与槽的方法,Qt信号的处理 (connect和disconnect和blockSignals的使用方法)
关于信号与槽的研究 DisConnect: bool QObject::disconnect(const QObject * sender, const char * signal, const QO ...
- qt信号发送间隔短而槽耗时多_Qt信号槽问题汇总 - osc_9q1dp3jk的个人空间 - OSCHINA - 中文开源技术交流社区...
1. 发送一次信号,调用多次槽函数问题 在同一个类中,多次链接QObject::connect(sender, SIGNAL(signalSender(QString, int)), receiver ...
- Qt源码分析之信号和槽机制
Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一 ...
- Qt 多线程中地信号与槽
Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...
- QT核心机制3:信号与槽
个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...
- Qt计算器开发(二):信号槽实现数学表达式合法性检查
表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...
- 1.QT元对象系统、信号槽概述、宏Q_OBJECT
一.元对象系统(Meta-Object System) Qt添加C++原本不具备的元对象系统,元对象系统提供了信号槽机制,运行时类型信息和动态属性系统. 元对象系统基于三点: 1.元对象系统为以QOb ...
- Qt 控制台 使用connect连接信号和槽
导言: Qt的信号号和槽 (Signal&Slots)是Qt的特性,深入理解该机制是能够精通Qt编程的关键. 信号号和槽 (Signal&Slots)的作用: 信号和槽用于两个对象之间 ...
最新文章
- Toast 位置的改变 和 Toast的简单用法
- ECshop商城程序常见的96个小问题汇总
- Jupyter Notebook 快速入门(上)
- 《Pro ASP.NET MVC 3 Framework》学习笔记之四【领域模型介绍】
- 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
- ulimit设置不生效?
- 【时间序列】DTW算法详解
- 使用Chrome inspect进行夜神模拟器里app的调试
- dreamweaver+cs6+android,使用Dreamweaver cs6开发移动应用
- EXE文件结构及读取方法 1
- 【数字IC/FPFA】时序约束--时钟约束
- 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...
- SZ19网安密码学期末考试(回忆版)
- 杭州云栖·2050大会-团聚召集人手册
- maven 使用 Nexus 搭建私服并发布distributionManagement的配置使用
- 科技云报道:超融合遍地开花,用户离“云计算自由”却依然很远?
- Chrome使用独立显卡开启WebGPU
- SW mysql_Swoft MySQL
- 鸦片战争始末小结与个人感悟·《中国近百年政治史》
- 2021年世界地图shp数据arcgis中英文字段美化mxd(含效果图)
热门文章
- Linux 命令(86)—— head 命令
- Linux 命令(71)—— ldconfig 命令
- 识别同音字词pypinyin, 分词 jieba
- 【Python】【有趣的模块】【systimeos】
- Linux基础(2)-基础命令和bash的基础特性(1)
- MySQL中CASE的使用
- 第三节:SpringBoot中web项目推荐目录结构
- ubuntu E470无线网卡驱动
- TensorFlow 2.0开发者测试版来啦,正式版推出指日可待
- mysql 参数 innodb_flush_log_at_trx_commit