📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

187行目: 187行目:
     }
     }
  };
  };
</syntaxhighlight>
<br>
==== Q_ENUMSマクロ (Qt 5のみ) ====
列挙型をQtのメタオブジェクトシステムに登録するために使用する。<br>
<br>
複数の列挙型を1度に登録することができる。<br>
列挙型の値を文字列に変換する、または、その逆を行うことが可能である。<br>
<br>
また、QMLで列挙型を使用可能にする。<br>
<br>
<u>ただし、Qt 6以降では、<code>Q_ENUM</code>マクロに置き換えられている。</u><br>
<u>後方互換性のためにサポートされている。</u><br>
<br>
==== Q_CLASSINFO ====
クラスに関する追加のメタデータを定義するために使用する。<br>
これは、クラスに関する任意の名前と値のペアとして情報を格納することができ、実行時にこの情報にアクセスすることができる。<br>
<br>
リフレクションを通じてランタイムにこの情報にアクセスすることができる。<br>
<br>
以下の例では、MyClassに対して3つの追加情報 (Version、Author、Description) を定義している。<br>
printClassInfoメソッドでは、QMetaObjectを使用してこれらの情報にアクセスして表示している。<br>
<br>
<syntaxhighlight lang="c++">
// MyClass.hファイル
#include <QObject>
#include <QMetaClassInfo>
#include <QDebug>
class MyClass : public QObject
{
    Q_OBJECT
    Q_CLASSINFO("Version", "1.0")
    Q_CLASSINFO("Author", "John Doe")
    Q_CLASSINFO("Description", "This is a sample class")
public:
    MyClass(QObject *parent = nullptr) : QObject(parent) {}
    static void printClassInfo()
    {
      const QMetaObject* metaObject = &MyClass::staticMetaObject;
      qDebug() << "Class name: " << metaObject->className();
      int count = metaObject->classInfoCount();
      qDebug() << "Class info count: " << count;
      for (int i = 0; i < count; ++i) {
          QMetaClassInfo classInfo = metaObject->classInfo(i);
          qDebug() << classInfo.name() << ":" << classInfo.value();
      }
    }
};
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
// main.cppファイル
#include "MyClass.h"
int main()
{
    MyClass::printClassInfo();
    return 0;
}
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>