这门课没问题:
#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提供的所有magics。上面的第二个版本(继承自QGraphicsPixmapItem)似乎证明了我是错的。结果是编译时出现了很多错误,这些错误都来自moc文件(由QT自动生成)。会发生什么?
其中一些错误是:
发布于 2013-11-22 07:38:44
根据文档,QGraphicsPixmapItem不是一个QObject,因此您不能把它当作是一个QObject。我会尝试扩展您的类继承,并这样做:
class LiveImageItem : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT //this line will generate many errors in compiling
[..]发布于 2013-11-22 08:53:57
正如@vahancho所说,QGraphicsPixmapItem不是QObject。事实上,这可以说是大多数QGraphics*Item类的例子。
但是,如果您想在QGraphicsSystem类中使用信号和插槽,您可以从QGraphicsObject继承:-
class LiveImageItem : public QGraphicsObject
{
Q_OBJECT
public:
private:
QPixmap m_pixmap;
};然后,您将重写该类中的画图函数,并从其中绘制像素映射。
https://stackoverflow.com/questions/20139469
复制相似问题