gpt4 book ai didi

qt - 在Qt中,如何使用具有多重继承的Q_OBJECT插槽和信号?

转载 作者:行者123 更新时间:2023-12-04 13:22:28 27 4
gpt4 key购买 nike

我浏览了相关的问题,找不到与我所说的完全相符的内容,所以让我描述一下。

我有一个类,比方说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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com