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 类扩展的主要内容,如果未能解决你的问题,请参考以下文章