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;
};