我浏览了相关的问题,找不到任何能准确解决我所说的问题的东西,所以让我来描述一下。
我有一个类,假设 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 兽医,如果您能更好地解释它,请发布答案。我花了很多时间查找此信息,所以如果您能做得比我更好,请帮助其他人。