As the QObject文档 http://qt-project.org/doc/qt-4.8/qobject.html#no-copy-constructor-or-assignment-operator和许多其他人解释说,QObject
有一个身份,因此隐藏其复制构造函数和赋值运算符。
但是,我不是源自QObject
用于其动态属性功能或信号/时隙功能。我只想反射,或访问的能力Foo::staticMetaObject
.
class Foo : public QObject {
Q_OBJECT
Q_ENUMS(Color)
public:
enum Color { Blue, Red, Pink };
private:
Color color;
};
Q_DECLARE_METATYPE(Foo::Color)
那我就无法复制了Foo
with:
Foo a;
Foo b;
a = b;
在这种情况下允许复制和分配的最佳方法是什么?我绝对需要编写复制构造函数和赋值运算符吗?他们会是什么样子?反思还会起作用吗?
如果您只对反思感兴趣
- 班级名称,
- 枚举和标志(Q_ENUMS、Q_FLAGS),
- 班级信息(Q_CLASSINFO http://doc.qt.nokia.com/latest/qobject.html#Q_CLASSINFO),
您可以使用Q_GADGET代替Q_OBJECT http://qt-project.org/doc/qt-5.1/qtcore/qobject.html#Q_OBJECT:
class Foo {
Q_GADGET
Q_ENUMS(Color)
public:
enum Color { Blue, Red, Pink };
private:
Color color;
};
这将声明和定义Foo::staticMetaObject
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)