我浏览了相关的问题,找不到与我所说的完全相符的内容,所以让我描述一下。
我有一个类,比方说foo,它需要有自己的插槽和信号,还需要从QXmlDefaultHandler继承(听起来很奇怪,但是当我尝试使用QHttp将网站直接读入QBuffer时遇到了这种情况)。
class foo: public QXmlDefaultHandler, public QObject
{
public:
foo();
~foo();
Q_OBJECT
public slots:
void bar();
}
如果此代码伴随cpp将bar连接到其他地方的信号,则将无法编译。您将收到有关QObject的某些成员不是QXmlDefaultHandler成员的错误。此外,您不能移动Q_OBJECT,否则会因为未实现某些功能而收到vtable错误(继续!尝试!)。
请查看我的答案(非常简单)。如果我认为您的解释要比我做得更好,我将对您作为接受的答案进行投票。
编辑:对于您的c++和Qt vert ,如果可以更好地解释它,请发布答案。我花了很多时间查找此信息,因此,如果您可以做得比我更好,请帮助其他人。
最佳答案
documentation for moc指出,在多重继承的情况下,提供QObject的类应首先出现
If you are using multiple inheritance, moc assumes that the first inherited class is a subclass of QObject. Also, be sure that only the first inherited class is a QObject.
// correct class SomeClass : public QObject, public OtherClass { ... };
Virtual inheritance with QObject is not supported.
关于qt - 在Qt中,如何使用具有多重继承的Q_OBJECT插槽和信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489238/