這個類沒有問題:Q_OBJECT產生許多錯誤
#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)
{
}
I t要求每個QT對象基本上都是從QObject繼承的,所以如果我繼承了QObject的任何一個子類,我可以擁有所有QObject提供的魔法。上面的第二個版本(從QGraphicsPixmapItem繼承而來)似乎證明我錯了。事實證明,編譯時有很多錯誤,全部來自moc文件(由QT自動生成)。怎麼了?
一些錯誤是:
- [qobject.h]錯誤: 'QScopedPointer的QObject ::應將d_ptr' 是 保護
[moc_LiveImageItem.cpp]錯誤:在這一範圍內
...
我看到你從QThread繼承LiveImageItem ...你應該閱讀這個:http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/ – TheDarkKnight