【发布时间】:2013-11-22 07:34:20
【问题描述】:
这个类没问题:
#include <QThread>
class LiveImageItem : public QThread
{
Q_OBJECT
public:
LiveImageItem(QPixmap pimg);
signals:
public slots:
};
但是这个类得到了与头文件中定义的“Q_OBJECT”宏相关的问题
#include <QGraphicsPixmapItem>
class LiveImageItem : public QGraphicsPixmapItem
{
Q_OBJECT //this line will generate many errors in compiling
public:
LiveImageItem(QPixmap pimg);
signals:
public slots:
};
他们的cpp文件都是一样的:
#include "LiveImageItem.h"
LiveImageItem::LiveImageItem(QPixmap pimg)
{
}
我认为每个 QT 对象本质上都是从 QObject 继承的,所以如果我继承 QObject 的任何子类,我就可以拥有 QObject 提供的所有魔法。上面的第二个版本(继承自 QGraphicsPixmapItem)似乎证明我错了。结果在编译时出现了很多错误,全部来自 moc 文件(由 QT 自动生成)。会发生什么?
其中一些错误是:
- [qobject.h] 错误:“QScopedPointer QObject::d_ptr”是 受保护的
[moc_LiveImageItem.cpp] 错误:在此上下文中
...
【问题讨论】:
-
我看到您从 QThread 继承了 LiveImageItem...您应该阅读以下内容:blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong