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信号阻塞和断开信号槽相关推荐

  1. Qt核心特性之 —— 「信号(Signal)与槽(Slot)」机制

    目录 1.Qt 与 Qt Creator简介: 2.关于引用头文件的一些事儿: 3.信号(Signal)与槽(Slot)机制: 3.1.一个小例子: 4.自定义信号与槽: 4.1.运行效果: 5.信号 ...

  2. Qt断开信号与槽的方法,Qt信号的处理 (connect和disconnect和blockSignals的使用方法)

    关于信号与槽的研究 DisConnect: bool QObject::disconnect(const QObject * sender, const char * signal, const QO ...

  3. qt信号发送间隔短而槽耗时多_Qt信号槽问题汇总 - osc_9q1dp3jk的个人空间 - OSCHINA - 中文开源技术交流社区...

    1. 发送一次信号,调用多次槽函数问题 在同一个类中,多次链接QObject::connect(sender, SIGNAL(signalSender(QString, int)), receiver ...

  4. Qt源码分析之信号和槽机制

    Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的 说法,简单点说就是如何在一个类的一 ...

  5. Qt 多线程中地信号与槽

    Qt 多线程中地信号与槽 函数原型: 1 QObject::connect(const QObject *sender, const char *signal, const QObject *rece ...

  6. QT核心机制3:信号与槽

    个人博客对应地址:QT核心机制3:信号与槽 写在前面 这篇文章基本是对Qt官方文档某些章节的翻译理解了,翻译这些章节的原因是我认为这些是Qt中最核心的东西,翻译的过程也就是强迫自己认真去读它们的过程, ...

  7. Qt计算器开发(二):信号槽实现数学表达式合法性检查

    表达式的合法性 由于我们的计算器不是单步计算的,所以我们能够一次性输入一个长表达式.然而假设用户输入的长表达式不合法的话,那么就会引发灾难.所以有必要对于用户的输入做一个限制. 一些限制举例: 比方, ...

  8. 1.QT元对象系统、信号槽概述、宏Q_OBJECT

    一.元对象系统(Meta-Object System) Qt添加C++原本不具备的元对象系统,元对象系统提供了信号槽机制,运行时类型信息和动态属性系统. 元对象系统基于三点: 1.元对象系统为以QOb ...

  9. Qt 控制台 使用connect连接信号和槽

    导言: Qt的信号号和槽 (Signal&Slots)是Qt的特性,深入理解该机制是能够精通Qt编程的关键. 信号号和槽 (Signal&Slots)的作用: 信号和槽用于两个对象之间 ...

最新文章

  1. Toast 位置的改变 和 Toast的简单用法
  2. ECshop商城程序常见的96个小问题汇总
  3. Jupyter Notebook 快速入门(上)
  4. 《Pro ASP.NET MVC 3 Framework》学习笔记之四【领域模型介绍】
  5. 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)
  6. ulimit设置不生效?
  7. 【时间序列】DTW算法详解
  8. 使用Chrome inspect进行夜神模拟器里app的调试
  9. dreamweaver+cs6+android,使用Dreamweaver cs6开发移动应用
  10. EXE文件结构及读取方法 1
  11. 【数字IC/FPFA】时序约束--时钟约束
  12. 塔夫茨计算机科学,塔夫茨大学计算机科学研究生语言及申请要求-费用-课程设置...
  13. SZ19网安密码学期末考试(回忆版)
  14. 杭州云栖·2050大会-团聚召集人手册
  15. maven 使用 Nexus 搭建私服并发布distributionManagement的配置使用
  16. 科技云报道:超融合遍地开花,用户离“云计算自由”却依然很远?
  17. Chrome使用独立显卡开启WebGPU
  18. SW mysql_Swoft MySQL
  19. 鸦片战争始末小结与个人感悟·《中国近百年政治史》
  20. 2021年世界地图shp数据arcgis中英文字段美化mxd(含效果图)

热门文章

  1. Linux 命令(86)—— head 命令
  2. Linux 命令(71)—— ldconfig 命令
  3. 识别同音字词pypinyin, 分词 jieba
  4. 【Python】【有趣的模块】【systimeos】
  5. Linux基础(2)-基础命令和bash的基础特性(1)
  6. MySQL中CASE的使用
  7. 第三节:SpringBoot中web项目推荐目录结构
  8. ubuntu E470无线网卡驱动
  9. TensorFlow 2.0开发者测试版来啦,正式版推出指日可待
  10. mysql 参数 innodb_flush_log_at_trx_commit