我有一个类(MyClass),它从Qt内置对象(QGraphicsTextItem)继承其大部分功能. QGraphicsTextItem从QObject间接继承. MyClass还实现了一个接口MyInterface.

class MyClass : public QGraphicsTextItem,public MyInterface

我需要能够在MyInterface *上使用连接和断开连接.但是看起来连接和断开只能在QObject *实例上工作.由于Qt不支持QObject派生类的多重继承,所以我无法从QObject派生MyInterface. (也不会对接口有意义)

有一个discussion of the problem online,但是,在通常情况下(通过其接口访问对象),提出的解决方案是相当无用的,因为您无法从MyInterface *连接信号和插槽,但必须将其转换为派生类型.由于MyClass是许多MyInterface派生类之一,所以这将需要“代码臭”if-this-cast-to-this-else-if-that-c​​ast-to-the语句,并且不符合接口的用途.

这个限制有很好的解决方案吗?

更新:我注意到,如果我将一个MyInterface *到QObject *(因为我知道所有的MyInterface派生类也最终从QObject继承),它似乎工作,就是:

MyInterface *my_interface_instance = GetInstance();

connect(dynamic_cast(my_interface_instance),SIGNAL(MyInterfaceSignal()),this,SLOT(TempSlot()));

但这真的好像是我要求不明确的行为….

qt 多重继承_c – 使用多重继承的Qt信号和插槽相关推荐

  1. linux qt wifi连接,贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信号排列)...

    当前位置:我的异常网» Linux/Unix » 贡献自己写的,在linux,arm下的屏幕搜索wifi并连接 贡献自己写的,在linux,arm下的屏幕搜索wifi并连接(qt,多选择,wifi按信 ...

  2. Qt Designer的信号和插槽编辑模式

    Qt Designer的信号和插槽编辑模式 Qt Designer的信号和插槽编辑模式 连接对象 编辑和删除连接 Qt Designer的信号和插槽编辑模式 在Qt Designer的信号和插槽编辑模 ...

  3. Qt面试题(一)Qt信号槽第五个参数

    connect()第五个参数的作用,指定连接方式:默认,队列,直接     多线程时才有意义     默认的时候     如果是多线程,默认使用队列     如果是单线程, 默认使用直接方式     ...

  4. Qt使用lambda表达式实现无参信号与有参槽的连接

    Qt使用lambda表达式实现无参信号与有参槽的连接 在信号与槽进行连接时有一个"点击按钮关闭窗口"的实现,此时信号和槽都是无参情况可以进行匹配,但是当信号无参而槽有参数的时候,就 ...

  5. 【QT|趣谈】最详细的信号槽机制介绍!

    用最有趣的方式解释信号槽通讯机制 1 导语:信号槽的前世今生 2 QT的信号槽 2.1什么是信号槽? 2.2 用严谨的语言解释信号槽 3 信号槽实战 3.1 信号槽实例 4 信号槽plus 4.1 L ...

  6. qt中c语言函数发送qt信号,关于c ++:从Qt中的静态类方法发送信号

    我正在尝试编写一个静态回调函数,该函数经常从同一类中的另一个静态函数调用. 我的回调函数需要emit一个信号,但是由于某种原因,它根本无法这样做. 我将其放在调试器下,并且slot从不被调用. 但是, ...

  7. qt试用1(Eclipse+cdt+Qt)

    下载eclipse-cpp-helios-SR1-win32.zip 下载Qt 下载qt-eclipse-integration-win32-1.6.1.exe 写一个启动eclipse的batch文 ...

  8. QT开发(五十)——QT串口编程基础

    QT开发(五十)--QT串口编程基础 一.QtSerialPort简介 1.串口通信基础 目前使用最广泛的串口为DB9接口,适用于较近距离的通信.一般小于10米.DB9接口有9个针脚. 串口通信的主要 ...

  9. QT学习笔记(1)----- QT简介

    名字由来 在<C++ GUI Programming with Qt 4>里有这么一段介绍: A Brief Histroy of Qt: The letter 'Q' was chose ...

最新文章

  1. 随机森林(Random Forest)为什么是森林?到底随机在哪里?行采样和列采样又是什么东西?
  2. POJ 3761:Bubble Sort——组合数学
  3. EfficientNetV2震撼发布!87.3%准确率!模型更小,训练更快!谷歌大脑新作
  4. body添加代码 js_hexo 博客添加评论和阅读量
  5. iOS tableview的常用delegate和dataSource执行顺序
  6. 牛客网《BAT面试算法精品课》学习笔记
  7. Grafana plugins zabbix 安装
  8. Centos下MySQL的安装及常见问题
  9. 软件开发作为一种价值领域的研究
  10. ZOJ 3826 Hierarchical Notation 模拟
  11. 论文写作--学习所得
  12. 基于 HttpClient 4.5 的 HttpClientUtils
  13. Ubuntu虚拟机下载app网速太慢
  14. DeFi 的纵向扩张:利率协议将带来去中心化金融世界新变革
  15. java 操作Zip文件(压缩、解压、加密)
  16. [Java]-单例模式与volatile简介
  17. 最佳联盟营销软件解决方案:简化你的联盟管理
  18. 3dsmax-角色骨骼
  19. 如何修改服务器凭据,如何更改操作数据库帐户的用户凭据
  20. mysql连接校对_mysql字符集和校对规则(Mysql校对集)

热门文章

  1. 计算机图形学 图形变换
  2. javaweb JAVA JSP停车场管理系统源码JSP停车收费系统JSP停车场管理 JSP停车场收费系统
  3. sendmail报错:My unqualified host name ( name ) unknown; sleeping for retry
  4. SIGCHILD信号
  5. 滑板、围棋与 Kindle
  6. VScode软件使用之菜单栏语言设置
  7. 【citavi使用】使用BibTex方式导入文献
  8. 龙应台:孩子,我为什么要求你读书?
  9. 10月24日 化装晚会
  10. 关于下载安装latex报错的问题,texlive2021版