我通过相关问题望去,找不到任何地址正是我在说什么,所以让我形容。

我有一个类,比方说foo的,需要有自己的插槽和信号,还需要从QXmlDefaultHandler继承(听起来很奇怪的,而是试图直接使用QHTTP阅读的网站变成一个时,我遇到过这种情况Q缓冲器)。

class foo: public QXmlDefaultHandler, public QObject
{
    public:
        foo();
        ~foo();

       Q_OBJECT
   public slots:
       void bar();
}

这个代码,如果伴随有CPP到杆连接到一个信号别处,将不编译。你会得到有关的QObject不是QXmlDefaultHandler成员的一些成员的错误。此外,您不能移动Q_OBJECT,否则你得到的vtable错误,不实施一些事情(去!试试吧!)。

请看看我的(很简单)答案解决。我会招待你投票作为公认的答案,如果我想你解释它比我更好。

编辑:为你的C ++和Qt兽医,请张贴的答案,如果你能更好地解释它。我花了相当多的时间了寻找这个信息,所以请帮助别人,如果你可以做得比我更好。

其他提示

class foo: public QObject, public QXmlDefaultHandler
{
    public:
        foo();
        ~foo();
   Q_OBJECT
   public slots:
       void bar();
}

由于简单,因为它的声音,如果你不把QObject的第一继承列表,这个任务是不可能的。这是在Qt的元对象系统的限制。如果你不这样做,编译器将尝试QObject的一些成员适用,QXmlDefaultHandler的一部分。

scroll top