QMetaEnum Class
QMetaEnum クラスは、列挙子に関するメタデータを提供します。詳細...
ヘッダー | #include <QMetaEnum> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
パブリック関数
const char * | enumName() const |
(since 6.9) bool | is64Bit() const |
bool | isFlag() const |
bool | isScoped() const |
bool | isValid() const |
const char * | key(int index) const |
int | keyCount() const |
(since 6.9) std::optional<quint64> | keyToValue64(const char *key) const |
int | keyToValue(const char *key, bool *ok = nullptr) const |
std::optional<quint64> | keysToValue64(const char *keys) const |
int | keysToValue(const char *keys, bool *ok = nullptr) const |
(since 6.6) QMetaType | metaType() const |
const char * | name() const |
const char * | scope() const |
(since 6.9) std::optional<quint64> | value64(int index) const |
int | value(int index) const |
const char * | valueToKey(quint64 value) const |
QByteArray | valueToKeys(quint64 value) const |
静的パブリックメンバー
QMetaEnum | fromType() |
詳しい説明
列挙者の名前にはname() を使用します。列挙子のキー(列挙された各項目の名前)はkey() で返される。キーの数を調べるにはkeyCount() を使用する。isFlag() は、列挙子がフラグとして使用されるかどうかを返します。つまり、列挙子の値は OR 演算子を使用して結合することができます。
変換関数keyToValue()、valueToKey()、keysToValue()、valueToKeys() を使用すると、列挙型または集合型の値の整数表現とリテラル表現との間で変換を行うことができます。scope() 関数は、この列挙子が宣言されたクラス・スコープを返します。
QMetaObject 、QMetaMethod 、QMetaPropertyも参照 。
メンバ関数のドキュメント
const char *QMetaEnum::enumName() const
フラグの列挙名を(スコープを除いて)返す。
例えば、Qt::AlignmentFlag フラグは、enum 名がAlignmentFlag
であるが、型名はAlignment
である。フラグ以外のenumは同じ型名とenum名を持つ。
enum名は型名と同じスコープを持つ。
[static]
template <typename T> QMetaEnum QMetaEnum::fromType()
テンプレート・パラメーターの型に対応するQMetaEnum を返す。列挙型はQ_ENUM で宣言する必要があります。
[since 6.9]
bool QMetaEnum::is64Bit() const
この列挙の基礎となる型が 64 ビット幅の場合、true
を返します。
この関数は Qt 6.9 で導入されました。
value64()も参照してください 。
bool QMetaEnum::isFlag() const
この列挙子がフラグとして使われている場合はtrue
を返し、そうでない場合は false を返す。
フラグとして使用する場合、列挙子は OR 演算子を使用して結合することができます。
keysToValue() およびvalueToKeys()も参照 。
bool QMetaEnum::isScoped() const
この列挙子が C++11 列挙子クラスとして宣言されている場合はtrue
を返し、そうでない場合は false を返します。
bool QMetaEnum::isValid() const
この列挙型が有効(名前がある)ならtrue
を返し、そうでなければ false を返す。
name()も参照 。
const char *QMetaEnum::key(int index) const
指定されたindex を持つキー、またはそのようなキーが存在しない場合はnullptr
を返します。
keyCount()、value() およびvalueToKey()も参照 。
int QMetaEnum::keyCount() const
キーの数を返す。
key()も参照 。
[since 6.9]
std::optional<quint64> QMetaEnum::keyToValue64(const char *key) const
与えられた列挙型key 、またはkey が定義されていない場合はstd::nullopt
の整数値を返す。
フラグ型の場合はkeysToValue64() を使用する。
この関数は、32ビットの列挙型が符号付きである場合(例えば、int
、short
)、常にその値を64ビットに符号拡張します。ほとんどの場合、これは期待される動作である。
特筆すべき例外は、0x8000'0000のようにビット31が設定されているフラグ値で、一部のコンパイラ(Microsoft Visual Studioなど)では、自動的に符号なし型に切り替わらないからです。この問題を回避するには、enum
宣言で基礎となる型を明示的に指定します。
注: Qt 6.6以前にコンパイルされたQMetaObjectでは、この関数は常に符号拡張します。
この関数はQt 6.9で導入されました。
valueToKey(),isFlag(),keysToValue64()も参照してください 。
int QMetaEnum::keyToValue(const char *key, bool *ok = nullptr) const
与えられた列挙値key の整数値、またはkey が定義されていない場合は -1 を返す。
key が定義されていない場合、 *ok は偽に設定され、そうでない場合 *ok は真に設定される。
フラグ型の場合は、keysToValue ()を使用する。
これが64ビット列挙型の場合(is64Bit()を参照)、この関数は値の下位32ビット部分を返す。代わりに完全な値を取得するにはkeyToValue64() を使用します。
keyToValue64 、valueToKey()、isFlag()、keysToValue()、is64Bit()も参照 。
std::optional<quint64> QMetaEnum::keysToValue64(const char *keys) const
keys の値を OR 演算子で結合した値、またはkeys が定義されていない場合はstd::nullopt
を返す。keys の文字列は'|'区切りでなければならないことに注意。
この関数は、32ビットの列挙型が符号付きである場合(例えば、int
,short
)、常にその値を64ビットに符号拡張する。ほとんどの場合、これは期待される動作です。
特筆すべき例外は、0x8000'0000のようにビット31が設定されているフラグ値で、一部のコンパイラ(Microsoft Visual Studioなど)では、自動的に符号なし型に切り替わらないからです。この問題を回避するには、enum
宣言で基礎となる型を明示的に指定します。
注意: Qt 6.6以前にコンパイルされたQMetaObjectでは、この関数は常に符号拡張します。
isFlag(),valueToKey(),valueToKeys()も参照してください 。
int QMetaEnum::keysToValue(const char *keys, bool *ok = nullptr) const
keys の値を OR 演算子で結合した値、またはkeys が定義されていない場合は -1 を返す。keys の文字列は'|'区切りでなければならないことに注意。
keys が定義されていない場合、 *ok はfalseに設定される。そうでない場合、 *ok はtrueに設定される。
これが64ビットの列挙(is64Bit ()を参照)の場合、この関数は値の下位32ビット部分を返す。代わりに完全な値を取得するにはkeyToValue64() を使用する。
keysToValue64()、isFlag()、valueToKey()、valueToKeys()、is64Bit()も参照 。
[since 6.6]
QMetaType QMetaEnum::metaType() const
列挙型のメタ型を返します。
このenumの一部であるQMetaObject がQt 6.5以前で生成された場合、これは無効なメタ型になります。
注: これはenum自体のメタ型であり、その下にある積分型のメタ型ではありません。enumの基礎となる型のメタ型を取得するには、QMetaType::underlyingType ()を使用します。
この関数はQt 6.6で導入されました。
const char *QMetaEnum::name() const
スコープを除いた)型名を返す。
例えば、Qt::Key 列挙型の場合、Key
が型名、Qt がスコープとなる。
フラグの場合は、列挙型の名前ではなくフラグ型の名前を返します。
isValid()、scope()、enumName()も参照のこと 。
const char *QMetaEnum::scope() const
この列挙子が宣言されたスコープを返す。
たとえば、Qt::AlignmentFlag 列挙体のスコープはQt
で、名前はAlignmentFlag
です。
name()も参照 。
[since 6.9]
std::optional<quint64> QMetaEnum::value64(int index) const
与えられたindex が存在すればその値を返し、存在しなければstd::nullopt
を返す。
この関数は、32ビットの列挙型が符号付きである場合、その値を常に64ビットに符号拡張します(例:int
,short
)。ほとんどの場合、これは期待される動作です。
特筆すべき例外は、0x8000'0000のようにビット31が設定されているフラグ値で、一部のコンパイラ(Microsoft Visual Studioなど)では、自動的に符号なし型に切り替わらないからです。この問題を回避するには、enum
宣言で基礎となる型を明示的に指定します。
注: Qt 6.6以前にコンパイルされたQMetaObjectでは、この関数は常に符号拡張します。
この関数はQt 6.9で導入されました。
keyCount(),key(),keyToValue(),is64Bit()も参照してください 。
int QMetaEnum::value(int index) const
与えられたindex; を持つ値を返すか、そのような値がない場合は -1 を返す。
これが64ビット型の列挙型の場合(is64Bit()を参照)、この関数は値の下位32ビット部分を返します。代わりに完全な値を取得するにはvalue64() を使用する。
value64()、keyCount()、key()、keyToValue()も参照 。
const char *QMetaEnum::valueToKey(quint64 value) const
指定された列挙型の名前として使用される文字列value 、またはvalue が定義されていない場合はnullptr
を返す。
フラグ型の場合はvalueToKeys() を使用します。
isFlag() およびvalueToKeys()も参照 。
QByteArray QMetaEnum::valueToKeys(quint64 value) const
与えられたvalue を表す、'|'で区切られたキーのバイト配列を返す。
注意: 基本型が 32 ビットの列挙型に 64 ビットのvalue を渡すと(つまり、is64Bit() がfalse
を返す場合)、空の文字列が返される。
isFlag()、valueToKey()、keysToValue()も参照 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.