大佬教程收集整理的这篇文章主要介绍了c – 使用多重继承的Qt信号和插槽,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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-cast-to-the语句,并且不符合接口的用途.
这个限制有很好的解决方案吗?
更新:我注意到,如果我将@L_882_1@myInterface *到QObject *(因为我知道所有的MyInterface派生类也最终从QObject继承),它似乎工作,就是:
@H_517_2@myInterface *my_interface_instance = GeTinstance(); connect(dynamic_cast<QObject*>(my_interface_instancE),SIGNAL(MyInterfaceSignal()),this,SLOT(TempSlot()));但这真的好像是我要求不明确的行为….
我还会提供一些其他建议:
>使用Q_INTERFACES功能(不仅适用于插件).那么当你真正需要的时候,你可以使用QObject和Qobject_cast来@L_840_14@myInterface.我不知道你的问题详细,但由于你知道所有的MyInterface实例也是QObjects,这似乎是最明智的做法.>将QObject * asQObject()抽象方法添加到MyInterface,并将其实现为{return this; }在所有子类.有一个QGraphicsTextItem(组合)而不是一个(继承).
以上是大佬教程为你收集整理的c – 使用多重继承的Qt信号和插槽全部内容,希望文章能够帮你解决c – 使用多重继承的Qt信号和插槽所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。