C++ Q_对象会产生许多错误

C++ Q_对象会产生许多错误,c++,qt,qobject,C++,Qt,Qobject,这节课没问题: #include <QThread> class LiveImageItem : public QThread { Q_OBJECT public: LiveImageItem(QPixmap pimg); signals: public slots: }; 我认为每个QT对象本质上都是从QObject继承的,所以如果我继承QObject的任何子类,我就可以拥有QObject提供的所有魔法。上面的第二个版本是从QGraphicsPixmapI

这节课没问题:

#include <QThread>

class LiveImageItem : public QThread
{
    Q_OBJECT
public:
    LiveImageItem(QPixmap pimg);

signals:

public slots:

};
我认为每个QT对象本质上都是从QObject继承的,所以如果我继承QObject的任何子类,我就可以拥有QObject提供的所有魔法。上面的第二个版本是从QGraphicsPixmapItem继承的,这似乎证明了我错了。事实证明,它在编译时有很多错误,这些错误都来自QT自动生成的moc文件。会发生什么

其中一些错误是:

[qobject.h]错误:“QScopedPointer qobject::d_ptr”为 受保护的 [moc_LiveImageItem.cpp]错误:在此上下文中


根据文档,QGraphicsPixmapItem不是QObject,因此不能将其视为QObject。我将尝试扩展您的类继承,并执行以下操作:

class LiveImageItem : public QObject, public QGraphicsPixmapItem
{

    Q_OBJECT //this line will generate many errors in compiling
[..]

根据文档,QGraphicsPixmapItem不是QObject,因此不能将其视为QObject。我将尝试扩展您的类继承,并执行以下操作:

class LiveImageItem : public QObject, public QGraphicsPixmapItem
{

    Q_OBJECT //this line will generate many errors in compiling
[..]

正如@vahancho所说,QGraphicsPixmapItem不是QoObject。事实上,这可以说是大多数QGraphics*项目类

但是,如果要将信号和插槽与QGraphicsSystem类一起使用,可以从以下继承:-


然后,您将重写此类中的paint函数,并从中绘制pixmap。

正如@vahancho所说,QGraphicsPixmapItem不是QObject。事实上,这可以说是大多数QGraphics*项目类

但是,如果要将信号和插槽与QGraphicsSystem类一起使用,可以从以下继承:-


然后,您将重写此类中的paint函数并从中绘制pixmap。

QObject或QGraphicsObjectQObject或QGraphicsObjectQObject看到您从QThread继承了LiveImageItem…您应该阅读以下内容:我看到您从QThread继承了LiveImageItem…您应该阅读以下内容:
class LiveImageItem : public QObject, public QGraphicsPixmapItem
{

    Q_OBJECT //this line will generate many errors in compiling
[..]
class LiveImageItem : public QGraphicsObject
{
    Q_OBJECT

    public:


    private:
        QPixmap m_pixmap;
};