Qt QLine类扩展

时间:2011-03-11 08:23:22

标签: c++ qt inheritance

我正在尝试扩展QLine类以包含颜色属性。我使用QCreator为新类QLineColor创建代码,我在公共数据中添加了char color = 0属性。这是QCreator生成的代码。

更新:根据有关QObject的响应进行修改。但现在我得到了一些其他的错误:

/home/james/qtsdk-2010.05/qt/include/QtCore/qobject.h:309: error:
 ‘QObject::QObject(const QObject&)’ is private
within this context
and it lists several qt/include directories

文件:QLineColor.h

#ifndef QLINECOLOR_H
#define QLINECOLOR_H

#include <QLine>
#include <QObject>

class QLineColor : public QObject, public QLine
{
    Q_OBJECT
public:
    explicit QLineColor(int x1, int y1, int x2, int y2, char color);
    char color;


};

#endif // QLINECOLOR_H

文件:qlinecolor.cpp

#include "qlinecolor.h"

QLineColor::QLineColor(int x1, int y1, int x2, int y2, char color) :
    QLine(x1, y1, x2, y2)
{
    color = 0;
}

2 个答案:

答案 0 :(得分:2)

要在类定义中包含Q_OBJECT宏,该类必须继承QObject

#include <QLine>
#include <QObject>

class QLineColor : public QObject, public QLine
{
    Q_OBJECT

修改

如果您在班级中使用信号和插槽机制,则需要包含Q_OBJECT宏。如果您不使用信号和插槽,则可以省略Q_OBJECT

答案 1 :(得分:1)

QLine并非来自QObject。因此Q_OBJECT等都是未定义的。

#include <QLine>
class QLineColor : public QLine
{
    QLineColor();
    char color;
};

应该有用。