2019-08-14起笔

小熊的情况描述:

    父类A继承自QWidget,所以父类A自动添加了Q_OBJECT。  子类B继承自父类A,子类B没有添加Q_OBJECT。在子类B中给动态创建的控件添加事件和槽。编译通过,无警告,无错误。运行时,应用程序输出栏显示:QObject::connect: No Such slot ......

网上扒拉扒拉很多网友给的方案是这样的:

以后要是碰到no such slot的问题
、添加头文件#include<QCoreApplication>
、看类声明中有没有Q_OBJECT
、看slot函数有没有声明 private slots:
void xxxx(); 、查看slot有没有出现拼写错误~~~

然而,小熊并没有从方案一受益,于是接着发现了下面这样一个方案:

在xxx.pro文件中添加

OBJECTS_DIR  = tmp
MOC_DIR = tmp

哈哈~百试不爽。 非常OK。

但是,问题接踵而至,再添加子类,子类C继承父类A,同样的场景,同样的处理方法,不见效了....what???请教网友了。

2019-08-16续写

基类B和基类C的信号和槽的关联方式为:

connect(m_lineEditL, SIGNAL(editingFinished()), this, SLOT(slotsLineEditContentVerify()));

今天在小熊在尝试两种方式使用线程的时候,我发现用另一个版本的connect比上面使用SIGNAL/SLOTS宏的版本好用,因此尝试做如下修改:

QObject::connect(m_lineEditL, &QLineEdit::editingFinished, this, &ZLayout::slotsLineEditContentVerify);

问题搞定,perfect。

回过头来思考, 编译错误提示是没有 基类::slotsFunctiong,   而this执行对象,是从基类继承而来的,我们又知道带宏定义SIGNAL/SLOTS版本的connect仅仅是做函数名的字符串替换,并不会像上面第二个版本一样进行类型检查,所以导致了异常现象的出现。

然后把修改工程文件的事情删掉,并不影响什么,说明不需要更改工程文件。 另外,每一个基类都应当采用第二种版本的connect。

小熊分析的真棒!!!

网友的力量真强大!!!

2019年08月18日续写

重读16日续写的内容,冥冥之中感觉到自己的解释不能够清晰的说服自己。 同时,无敌小熊猜疑到另一个点,是否是在父类A中声明一个跟基类B和基类C用到的槽函数一样的虚槽函数,问题一样可以解决呢,于是动手尝试了一下,在父类A中做如下补充:

parentCalss.h

public slots:
virtual void slotsLineEditContentVerify(); ...
parentClass.cpp
void slotsLineEditContentVerify()
{
}

这种方案下,两种connect版本都可以达到想要的效果。

通过对比,小熊再次认定第二种版本的connect好用,为啥呢,可以少做不必要的事情而达到相同的目的。至于8月18号解释的原因小熊日后再做校准。

Qt 信号和槽异常: QObject::connect: No Such slot baseClassName::subClassfunction() in ......的更多相关文章

  1. 6.QT信号和槽

     新建项目SignalAndSlot项目 编写代码如下: mysignal.h #ifndef MYSIGNAL_H #define MYSIGNAL_H   #include <QObje ...

  2. QT 信号与槽connect

    QT 信号与槽connect QT 信号与槽connect connect函数调用几个限制 connect函数代码 QT中信号与槽的连接使用的connect函数是一个静态函数,在类QObject中定义 ...

  3. Qt 信号与槽

    Qt信号与槽的理解 信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解.信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重 ...

  4. QT信号和槽

    QT信号和槽 ============ 信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler) ...

  5. QT运行出错:QObject::connect: Parentheses expected以及QObject::connect: No such slot ***

    我在QGraphicsScene子类中添加了item的弹出菜单,并连接Action到槽函数,结果槽函数不起作用,输出:QObject::connect: No such slot ***  C++ C ...

  6. Qt信号与槽机制

    一.信号和槽机制 信号和槽用于两个对象之间的通信,信号和槽机制是Qt的核心特征,也是Qt不同于其他开发框架的最突出的特征.在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化.更一般来说 ...

  7. Qt信号与槽使用方法最完整总结

    在图形界面编程中(参考<C++最好的图形库是什么?>),组件之间如何实现通信是核心的技术内容.Qt 使用了信号与槽的机制,非常的高效.简单.易学,方便开发者的使用.本文详细的介绍了Qt 当 ...

  8. Qt 信号与槽的自动关联机制

    前言 对于一些简单的事件判别,如点击按钮.无需写代码关联信号和槽函数. connect(ui->Btnshowhello,SIGNAL(clicked(bool)),this,SLOT(Btns ...

  9. Qt 信号和槽函数

    信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性.当某个信号被发射,就需要调用与之相绑定的槽函数.这与Windows下的消息机制类似,消息机制是基于回调函数.一个回调即是一个函数的 ...

随机推荐

  1. C#实现在foreach遍历中删除集合中的元素(方法总结)

    目录 方法一:采用for循环,并且从尾到头遍历 方法二:使用递归 方法三:通过泛型类实现IEnumerator 在foreach中删除元素时,每一次删除都会导致集合的大小和元素索引值发生变化,从而导致 ...

  2. 国内加速git下载速度

    主要是配置hosts文件 151.101.72.133 assets-cdn.github.com151.101.73.194 github.global.ssl.fastly.net192.30.2 ...

  3. 【树莓派】制作启动SD卡

    版权声明:本文为博主原创文章,转载请注明出处. https://www.cnblogs.com/YaoYing/ 下载烧写软件 烧写软件 将下载的压缩文件解压缩并安装到电脑上 下载树莓派镜像 树莓派系 ...

  4. django----csrf跨站请求伪造 auth组件 settings源码 importlib模块

    目录 importlib模块 csrf跨站请求伪造 form表单发送 ajax发送 csrf装饰器 auth模块 如何创建超级用户(root) 创建用户 校验用户名和密码是否正确 保存用户登录状态 判 ...

  5. 浅析堆栈段,BBS段,数据段,代码段

    文章目录 1. 进程,线程 2. 堆栈段 3. BBS段 4. 代码段 5. 数据段 6. 例子 7. 总结 1. 进程,线程 所谓进程是指在系统中能独立运行并作为资源分配的基本单位,程序段,数据段和 ...

  6. 常用数据结构之ArrayList

    前言 ArrayList想必是广大Java程序员开发时最常用的数据结构了,但不一定对其原理都有了解,今天我将结合ArrayList的源码对其进行讲解.本文将围绕ArrayList主要特性(包括适用场景 ...

  7. Android BSearchEdit 搜索结果选择框

    EditText搜索结果下拉框.自动or回调模式.可diy.使用超简便 (EditText search results drop-down box, auto or callback mode, d ...

  8. BIM工程信息管理系统搭建-系统功能需求

    BIM工程信息管理系统功能需求 该系统是真实存在项目,项目于2013年开始研发到2014年初完成,按照当时技术能力和国内BIM现状,现在BIM技术已比之前好多了,不管是建模.展示等.均提高了不少,本博 ...

  9. 关于使用DB2数据库的项目后台报-420错误码的问题

    ###  Error querying database.  Cause: com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-4 ...

  10. Java并发的若干基本陷阱、原理及解决方案

    勿止于结论:持续探索与求证. 概述 为什么要使用并发 ? 有三点足够信服的理由: 性能提升.单核 CPU 的性能基本抵达瓶颈,充分挖掘多核 CPU 的能力,使得性能提升变成水平可扩展的. 事件本质.世 ...