如何在Qt中列出从QObject继承的类的所有成员变量?

时间:2017-05-31 12:32:52

标签: c++ qt

假设我有一些像

这样的课程
class MyClass : public QObject
{
    Q_OBJECT

public:
    explicit MyClass (QObject *parent = 0);
    ~MyClass ();
    int var1;
    QString var2;
};

我想要做的是在循环中打印其成员变量,如var1和var2。 QMetaObject可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

不,它不能,因为Qt的元数据系统只提供有关类的以下信息:

  • 声明为信号,插槽或可调用的成员函数的名称,签名和按地址查找,
  • 类名和继承,
  • 命名属性(使用Q_PROPERTY声明),
  • 班级信息(用Q_CLASSINFO声明)。

具体来说,moc会忽略任何其他成员,并且不为它们生成元数据,因为这会浪费。

可以修补moc和元数据格式以添加其他类型的信息 - 这些都不是很大的变化。请随意查看moc源和QMetaData来解决这个问题。