13,005
回編集
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> |