Расширение класса Qt QLine - PullRequest
0 голосов
/ 11 марта 2011

Я пытаюсь расширить класс 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 ]

2 голосов
/ 11 марта 2011

Чтобы включить макрос Q_OBJECT в определение класса, класс должен наследовать QObject:

#include <QLine>
#include <QObject>

class QLineColor : public QObject, public QLine
{
    Q_OBJECT

РЕДАКТИРОВАТЬ

Необходимо включить Q_OBJECTмакрос, если вы используете механизм сигналов и слотов со своим классом.Если вы не используете сигнал и слоты, вы можете опустить Q_OBJECT.

1 голос
/ 11 марта 2011

QLine не является производным от QObject.Поэтому все Q_OBJECT и т. Д. Не определены.

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

должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...