Qt QLine 类扩展

Posted

技术标签:

【中文标题】Qt QLine 类扩展【英文标题】:Qt QLine class extension 【发布时间】:2011-03-11 08:23:21 【问题描述】:

我正在尝试扩展 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;

【问题讨论】:

【参考方案1】:

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

#include <QLine>
#include <QObject>

class QLineColor : public QObject, public QLine

    Q_OBJECT

编辑

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

【讨论】:

【参考方案2】:

QLine 不是从 QObject 派生的。因此 Q_OBJECT 等都是未定义的。

#include <QLine>
class QLineColor : public QLine

    QLineColor();
    char color;
;

应该可以。

【讨论】:

以上是关于Qt QLine 类扩展的主要内容,如果未能解决你的问题,请参考以下文章

qt多个线程调用同一个类怎么处理

qt 对话框扩展 缩放

Qt 全局快捷键扩展劫持快捷键

使用 Qt5 加载 OpenGL 扩展

QTabBar中的Qt4扩展选项卡

扩展 QWidget 上的 Qt/C++ 调用函数