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

How to list all member variables of a class inherited from QObject in Qt?

本文关键字:成员 变量 继承 何列出 Qt Qobject      更新时间:2023-10-16

让我们假设我有一些类,例如

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

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

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

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

具体来说,moc忽略了任何其他成员,不会为他们生成元数据,因为这将是浪费的。

可以修补MOC和元数据格式以添加其他类型的信息 - 这些信息不是很大的变化。随时查看MOC来源和QMetaData来弄清楚它。