Qt:安全的转换方式qobject_cast-程序员宅基地

技术标签: QT软件开发  

前言

1、qobject_cast用法

功能:

  • 将对象转换为 qt 原对象,向下转型

函数原型:

T qobject_cast ( QObject * object )

本方法返回object向下的转型T,如果转型不成功则返回0,如果传入的object本身就是0则返回0。

在使用时有两个限制:

1、T类型必须继承自QObject

2、在声明时必须有Q_OBJECT宏

应用: 多个对象的 signal 会连接到同一个 slot 时(例如多个Button可能会connect到一个slot函数onClick())。

用法:


QObject * obj = sender(); //返回发出信号的对象,用QObject类型接收

QPushButton *button_tmp = qobject_cast<QPushButton *>(obj);  //向下转型为按钮类型

if (button_tmp != nullptr)	//是否转型成功
{
	...对此按钮的其他操作
}

2、尽可能少的用强制转换:

qobject_cast 安全在于:当obj不属于QPushButton 的类型或者其子类的时候不能转换

QPushButton *button_tmp = qo
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41418343/article/details/100821685

智能推荐

在Watir中调用JavaScript脚本_watir执行脚本-程序员宅基地

文章浏览阅读3.9k次。如何在Watir中调用JavaScript脚本?下面的脚本实现了此功能,主要原理是通过IE访问Document,再访问parentWindow,最终还是由IE在执行JavaScript脚本: require watir#定义调用JS的类方法class Watir::IE def run_script(js) ie.Document.parentWindow.execS_watir执行脚本

为什么不能使用Thread.stop()方法?_禁止使用thread.stop()来终止线程-程序员宅基地

文章浏览阅读2.1k次。从SUN的官方文档可以得知,调用Thread.stop()方法是不安全的,这是因为当调用Thread.stop()方法时,会发生下面两件事:1. 即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。2. 释放该线程所持有的所有的锁 当线程抛出ThreadDeath异常时,会导致_禁止使用thread.stop()来终止线程

神秘魔术动作能量冲击波特效音效Arcane Forces第一套 MAGIC - ARCANE FORCES DESIGNED_magic – arcane forces-程序员宅基地

文章浏览阅读222次。神秘魔术动作能量冲击波特效音效Arcane Forces第一套 MAGIC - ARCANE FORCES DESIGNED原文地址:https://www.aeziyuan.com/t-20646.html文件格式:.WAV文件大小:1.26 GB(解压包大小)文件数量:124音频码率:96kHz, 24-bit音效适用于任何音/视频后期编辑软件,直接导入即可使用包含:酸,奥术,障壁,呼吸,增益,诅咒,减伤,神圣,电,能量,火,玻璃,冰,冲击,光,液体,金属,加工,抛射,隆隆声,序,召唤,._magic – arcane forces

commons-io工具包的基本使用_ioutils.tobytearray-程序员宅基地

文章浏览阅读4w次,点赞57次,收藏304次。目录一、工具类IOUtils的使用:FileUtils的使用:FilenameUtils的使用FileSystemUtils的使用:二、输入、输出三、Filters过滤器四、Comparators比较器五、Monitor文件监控简介:java io操作是开发中比较常用的技术,但是如果每次都使用原生的IO流来操作会显得比较繁琐。Common IO 是一..._ioutils.tobytearray

平面射影_坐标平面射影是什么-程序员宅基地

文章浏览阅读1.9k次。欧氏坐标(x,y)-&gt;-&gt; 平面上所有无穷远点所构成的集合称为无穷远直线。 射影平面:由欧氏平面与无穷远直线的并集所形成的扩展平面称为射影平面,有时也称为二维射影空间。向量的反对称矩阵定义为的叉积为矩阵具有如下性质:对偶命题:在射影平面内,点和线是一对互为对偶元素。在包含"点"和“线”元素的命题中,如果将两个元素的角色互换,则对应的命题也成立,并称它们是一对互为对偶命题。,二维向量称为..._坐标平面射影是什么

详解HTML的a标签(超链接标签)-程序员宅基地

文章浏览阅读1k次。原文  简书原文:https://www.jianshu.com/p/d6a2499db73b大纲  1、什么是<a>标签  2、<a>标签的几个重要属性  3、a标签的运行机制  4、a标签常用的协议  5、超链接标签的样式问题——a标签的伪类选择器的书写顺序1、什么是<a>标签  <a> 标签定义超链接,用于从一张页面链接到另..._超链

随便推点

TCP 的那些事 | TCP报文格式解析_.tcp文件是图片吗-程序员宅基地

文章浏览阅读1.3k次。TCP(Transmission Control Protocol 传输控制协议)提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。TCP在网络ISO的七层模型中的第四层---Transport层,在TCP/IP协议中的第三层---传输层。TCP通过下列方式来提供可靠性:1. 应用数据被分..._.tcp文件是图片吗

python——stack()和unstack()用法_unstack函数-程序员宅基地

文章浏览阅读1.2w次,点赞12次,收藏54次。在学习python的过程中遇到了这两个函数,讲讲学习的心得_unstack函数

AOP与OOP有什么区别,谈谈AOP的原理是什么,大厂Android高级面试题汇总解答-程序员宅基地

文章浏览阅读521次,点赞25次,收藏11次。包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**

最小费用流_单向图费用流-程序员宅基地

文章浏览阅读1.5k次。单向图#include//每次找费用的最短路,更新残留网络图直到找不到最短路为止#include//最大费用 权值取负值 结果取负值#include#include#includeusing namespace std;const int inf=0x3f3f3f3f;struct Node_单向图费用流

Python中的5个高阶概念属性的知识点!你要了解明白哦!_python属性的五大类-程序员宅基地

文章浏览阅读318次。在现代编程世界中,面向对象编程(OOP)语言在改变软件开发中的设计和实现模式方面发挥了进化作用。作为OOP家族的重要成员,Python在过去10年左右逐渐流行起来。与其他OOP语言一样,Python围绕大量不同的对象操作其数据,包括模块、类和函数。如果您有任何OOP语言的编程经验,您应该知道所有对象都有其内部特征数据,称为字段、属性或属性。在Python中,这些对象绑定的特征数据通常称为属性。在本文中,我将特别在自定义类的上下文中讨论它们。1. 类属性为了更好地管理项目中的数据,我们经常需要_python属性的五大类