QtC中多重继承的正确方法是什么?

QtC中多重继承的正确方法是什么?,第1张

概述在我的Qt应用程序中,我有一个基类如下.我正在使用QObject,因为我想在所有派生类中使用Signal-Slot机制. class IRzPlugin : public QObject {public: virtual void registerMenu(QWidget*); virtual void execute();} 然后我有另一个课程如下.我需要从QWidget扩展,因为 在我的Qt应用程序中,我有一个基类如下.我正在使用QObject,因为我想在所有派生类中使用Signal-Slot机制.
class IRzPlugin : public QObject {public:  virtual voID registerMenu(QWidget*);  virtual voID execute();}

然后我有另一个课程如下.我需要从QWidget扩展,因为我需要在所有派生类中实现事件处理方法(mouseMoveEvent(),keyPressEvent().. etc);

class IRzLayeringPlugin : public IRzPlugin,public QWidget{}

但是编译器给出了这些错误:

C:\svn\osaka3d\Tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx: In member function `virtual const QMetaObject* IRzLayeringPlugin::MetaObject() const':C:\svn\osaka3d\Tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'C:\svn\osaka3d\Tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'make[2]: *** [CMakefiles/Rinzo.dir/plugin/moc_IRzLayeringPlugin.cxx.obj] Error 1
解决方法 在当前的化身中,不可能在派生类的多个继承路径中使用QObject(像您的IRzLayeringPlugin类).我见过的唯一的解决方案是创建没有任何QObject继承的接口类,但是使用与要使用的QObject函数直接对应的函数,然后在界面和您的其他QObject类继承之间实现桥接类.它变得丑陋相当快. 总结

以上是内存溢出为你收集整理的Qt / C中多重继承的正确方法是什么?全部内容,希望文章能够帮你解决Qt / C中多重继承的正确方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1256028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存