「Qtの基礎 - プリプロセッサ」の版間の差分

ナビゲーションに移動 検索に移動
200行目: 200行目:
<u>後方互換性のためにサポートされている。</u><br>
<u>後方互換性のためにサポートされている。</u><br>
<br>
<br>
==== Q_FLAG / Q_FLAGS ====
列挙型をQtのメタオブジェクトシステムに登録するために使用する。<br>
<code>Q_FLAG</code>マクロは単一の列挙型、<code>Q_FLAGS</code>マクロは複数の列挙型を登録する。<br>
<br>
これにより、列挙型の値を文字列に変換する、または、QMLで使用することが可能になる。<br>
<br>
<syntaxhighlight lang="c++">
class Window : public QObject
{
    Q_OBJECT
public:
    enum Option {
      NoOption    = 0x0,
      ShowTitle  = 0x1,
      ShowButtons = 0x2
    };
    Q_FLAG(Option)
    enum Mode {
      Normal,
      Fullscreen
    };
    Q_ENUM(Mode)
    Q_FLAGS(Options, Option)
public:
    Window(QObject *parent = nullptr) : QObject(parent) {}
};
</syntaxhighlight>
<br>
<syntaxhighlight lang="c++">
// 使用例
void useEnums()
{
    Window window;
    QMetaEnum optionEnum = QMetaEnum::fromType<Window::Option>();
    qDebug() << optionEnum.valueToKey(Window::ShowTitle);  // 出力: "ShowTitle"
}
</syntaxhighlight>
<br>
==== Q_CLASSINFO ====
==== Q_CLASSINFO ====
クラスに関する追加のメタデータを定義するために使用する。<br>
クラスに関する追加のメタデータを定義するために使用する。<br>

案内メニュー