Qt连接信号到子类槽函数提示父类无相应槽函数

栏目: 编程工具 · 发布时间: 8年前

内容简介:Qt连接信号到子类槽函数提示父类无相应槽函数

Qt连接信号到子类槽函数提示父类无相应槽函数

通过connect连接一个信号到子类的一个槽函数却提示父类没有对应的槽函数。

代码

class Parent : public QObject
{
    Q_OBJECT
public:
    Parent(){};
    virtual ~Parent(){};
    virtual int hi(){};
};

class Child : public Parent
{
    Q_OBJECT     //子类中要记得加这个宏
public:
    Child(){};
    virtual ~Child(){};
    virtual int hi(){};
public slots:
    void slotDoSomething();

};

分析

子类中切记要加注释处的那个宏。不然运行时可能会出现父类中无相应槽函数的提示,并且槽函数不会被信号触发。

某些高版本的Qt可以识别出这个宏缺少的错误,并在编译时报出来。但5.1及以下版本就不好说了。

个人的理解是用connect时,Child对象中只有父类对象部分表现出QObject的特征,可以用connect进行信号槽的连接。而父类中没有此槽函数,所以会报出这个提示。要解决这个“定位错误”的问题,就要让编译器知道Child类也有QObject的特征。也即不仅要派生自QObject类,同时也要添加Q_OBJECT宏。

添加了2个虚函数,是为了让对象中产生虚表指针,生成动态类型信息。

本文永久更新链接地址 http://www.linuxidc.com/Linux/2017-03/142015.htm


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis 深度历险:核心原理与应用实践

Redis 深度历险:核心原理与应用实践

钱文品 / 电子工业出版社 / 2019-1 / 79

Redis 是互联网技术架构在存储系统中使用得最为广泛的中间件,也是中高级后端工程师技术面试中面试官最喜欢问的工程技能之一,特别是那些优秀的互联网公司,通常要求面试者不仅仅掌握 Redis 基础用法,还要理解 Redis 内部实现的细节原理。《Redis 深度历险:核心原理与应用实践》作者老钱在使用 Redis 上积累了丰富的实战经验,希望帮助更多后端开发者更快、更深入地掌握 Redis 技能。 ......一起来看看 《Redis 深度历险:核心原理与应用实践》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具