Ash*_*iya 12 c++ qt qt4 multiple-databases
在我的Qt应用程序中,我有一个基类如下.我正在使用QObject,因为我想在所有派生类中使用Signal-Slot机制.
class IRzPlugin : public QObject {
public:
virtual void registerMenu(QWidget*);
virtual void execute();
}
Run Code Online (Sandbox Code Playgroud)
然后我有另一个课程如下.我需要从QWidget扩展,因为我需要在所有派生类中实现事件处理方法.(mouseMoveEvent(),keyPressEvent().. etc);
class IRzLayeringPlugin : public IRzPlugin , public QWidget{
}
Run Code Online (Sandbox Code Playgroud)
但编译器给出了这些错误:
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
Run Code Online (Sandbox Code Playgroud)
在当前的版本中,不可能QObject
在派生类(如您的IRzLayeringPlugin
类)的多个继承路径中使用.我见过的唯一解决方案是创建一个没有任何QObject
继承的接口类,但是使用与QObject
您想要使用的函数直接对应的函数,然后QObject
在特定类中实现接口和其他类继承之间的桥接.它很快就变丑了.
归档时间: |
|
查看次数: |
8290 次 |
最近记录: |