QVariant Class
QVariant クラスは、Qt で最も一般的なデータ型に対するユニオンのような役割を果たします。詳細...
| ヘッダー: | #include <QVariant> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- 非推奨のメンバ
- QVariant は「暗黙的に共有されるクラス」の一部です。
QVariant の比較
| カテゴリ | 比較可能な型 |
|---|---|
| 等価性 | QVariant |
パブリック型
(since 6.11) class | ConstPointer |
(since 6.11) class | ConstReference |
(since 6.11) class | Pointer |
(since 6.11) class | Reference |
パブリック関数
| QVariant() | |
| QVariant(QChar c) | |
| QVariant(const QPersistentModelIndex &val) | |
| QVariant(const QRegularExpression &re) | |
| QVariant(const QString &val) | |
| QVariant(const QStringList &val) | |
| QVariant(const QUrl &val) | |
| QVariant(const char *val) | |
| QVariant(double val) | |
| QVariant(float val) | |
| QVariant(int val) | |
| QVariant(qlonglong val) | |
| QVariant(qulonglong val) | |
| QVariant(uint val) | |
| QVariant(QMetaType type, const void *copy = nullptr) | |
(since 6.12) | QVariant(QBitArray &&val) |
(since 6.12) | QVariant(QByteArray &&val) |
(since 6.12) | QVariant(QDateTime &&val) |
(since 6.12) | QVariant(QEasingCurve &&val) |
(since 6.12) | QVariant(QHash<QString, QVariant> &&val) |
(since 6.12) | QVariant(QJsonArray &&val) |
(since 6.12) | QVariant(QJsonDocument &&val) |
(since 6.12) | QVariant(QJsonObject &&val) |
(since 6.12) | QVariant(QJsonValue &&val) |
(since 6.12) | QVariant(QList<QVariant> &&val) |
(since 6.12) | QVariant(QLocale &&val) |
(since 6.12) | QVariant(QMap<QString, QVariant> &&val) |
(since 6.12) | QVariant(QPersistentModelIndex &&val) |
(since 6.12) | QVariant(QRegularExpression &&val) |
(since 6.12) | QVariant(QString &&val) |
(since 6.12) | QVariant(QStringList &&val) |
(since 6.12) | QVariant(QUrl &&val) |
(since 6.6) | QVariant(std::in_place_type_t<T>, Args &&... args) |
(since 6.6) | QVariant(std::in_place_type_t<T>, std::initializer_list<U> il, Args &&... args) |
| QVariant(QDate val) | |
| QVariant(QLatin1StringView val) | |
| QVariant(QLine val) | |
| QVariant(QLineF val) | |
| QVariant(QPoint val) | |
| QVariant(QPointF val) | |
| QVariant(QRect val) | |
| QVariant(QRectF val) | |
| QVariant(QSize val) | |
| QVariant(QSizeF val) | |
| QVariant(QTime val) | |
| QVariant(QUuid val) | |
| QVariant(T) | |
| QVariant(bool val) | |
| QVariant(const QBitArray &val) | |
| QVariant(const QByteArray &val) | |
| QVariant(const QDateTime &val) | |
| QVariant(const QEasingCurve &val) | |
| QVariant(const QHash<QString, QVariant> &val) | |
| QVariant(const QJsonArray &val) | |
| QVariant(const QJsonDocument &val) | |
| QVariant(const QJsonObject &val) | |
| QVariant(const QJsonValue &val) | |
| QVariant(const QList<QVariant> &val) | |
| QVariant(const QLocale &l) | |
| QVariant(const QMap<QString, QVariant> &val) | |
| QVariant(const QModelIndex &val) | |
| QVariant(const QVariant &p) | |
| QVariant(QVariant &&other) | |
| ~QVariant() | |
| bool | canConvert() const |
(since 6.0) bool | canConvert(QMetaType type) const |
| bool | canView() const |
| void | clear() |
| const void * | constData() const |
(since 6.0) bool | convert(QMetaType targetType) |
| void * | data() |
| const void * | data() const |
(since 6.6) T & | emplace(Args &&... args) |
(since 6.6) T & | emplace(std::initializer_list<U> list, Args &&... args) |
| bool | isNull() const |
| bool | isValid() const |
(since 6.0) QMetaType | metaType() const |
| void | setValue(QVariant &&value) |
| void | setValue(T &&value) |
| void | setValue(const QVariant &value) |
| void | swap(QVariant &other) |
| QBitArray | toBitArray() const |
| bool | toBool() const |
| QByteArray | toByteArray() const |
| QChar | toChar() const |
| QDate | toDate() const |
| QDateTime | toDateTime() const |
| double | toDouble(bool *ok = nullptr) const |
| QEasingCurve | toEasingCurve() const |
| float | toFloat(bool *ok = nullptr) const |
| QHash<QString, QVariant> | toHash() const |
| int | toInt(bool *ok = nullptr) const |
| QJsonArray | toJsonArray() const |
| QJsonDocument | toJsonDocument() const |
| QJsonObject | toJsonObject() const |
| QJsonValue | toJsonValue() const |
| QLine | toLine() const |
| QLineF | toLineF() const |
| QList<QVariant> | toList() const |
| QLocale | toLocale() const |
| qlonglong | toLongLong(bool *ok = nullptr) const |
| QMap<QString, QVariant> | toMap() const |
| QModelIndex | toModelIndex() const |
| QPersistentModelIndex | toPersistentModelIndex() const |
| QPoint | toPoint() const |
| QPointF | toPointF() const |
| qreal | toReal(bool *ok = nullptr) const |
| QRect | toRect() const |
| QRectF | toRectF() const |
| QRegularExpression | toRegularExpression() const |
| QSize | toSize() const |
| QSizeF | toSizeF() const |
| QString | toString() const |
| QStringList | toStringList() const |
| QTime | toTime() const |
| uint | toUInt(bool *ok = nullptr) const |
| qulonglong | toULongLong(bool *ok = nullptr) const |
| QUrl | toUrl() const |
| QUuid | toUuid() const |
| int | typeId() const |
| const char * | typeName() const |
| int | userType() const |
| T | value() const & |
| T | view() |
| QVariant & | operator=(QVariant &&other) |
| QVariant & | operator=(const QVariant &variant) |
静的パブリックメンバー
(since 6.0) QPartialOrdering | compare(const QVariant &lhs, const QVariant &rhs) |
(since 6.7) QVariant | fromMetaType(QMetaType type, const void *copy = nullptr) |
| QVariant | fromStdVariant(const std::variant<Types...> &value) |
(since 6.6) QVariant | fromStdVariant(std::variant<Types...> &&value) |
| QVariant | fromValue(const T &value) |
(since 6.6) QVariant | fromValue(T &&value) |
関連する非メンバー
| QVariantHash | |
| QVariantList | |
| QVariantMap | |
(since 6.6) T & | get(QVariant&v) |
(since 6.6) T && | get(QVariant &&v) |
(since 6.6) const T & | get(const QVariant&v) |
(since 6.6) const T && | get(const QVariant&&v) |
(since 6.6) T * | get_if(QVariant*v) |
(since 6.6) const T * | get_if(const QVariant*v) |
| T | qvariant_cast(const QVariant&value) |
(since 6.7) T | qvariant_cast(QVariant&&value) |
| bool | operator!=(const QVariant&lhs, const QVariant&rhs) |
| QDataStream & | operator<<(QDataStream&s, const QVariant&p) |
| bool | operator==(const QVariant&lhs, const QVariant&rhs) |
| QDataStream & | operator>>(QDataStream&s, QVariant&p) |
詳細な説明
QVariantオブジェクトは、一度に1つのtypeId()の値を1つ保持します。(文字列リストなど、複数の値を持つ型もあります。) バリアントが保持している型 T を確認したり、convert() を使用して別の型に変換したり、toT() 関数(例:toSize())のいずれかを使用してその値を取得したり、canConvert() を使用してその型が特定の型に変換可能かどうかを確認したりすることができます。
toT() という名前のメソッド(例:toInt()、toString())は const です。格納されている型を問い合わせた場合、これらのメソッドは格納されているオブジェクトのコピーを返します。格納されている型から生成可能な型を問い合わせた場合、toT() はコピーと変換を行い、オブジェクト自体は変更しません。 格納された型から生成できない型を要求した場合、結果は型によって異なります。詳細については、関数のドキュメントを参照してください。
以下に、QVariant の使用例を示すサンプルコードを示します。
QDataStream out("...");
QVariant v(123); // バリアントには int が格納される
intx=v.toInt(); // x = 123
out<<v; // タイプタグと int を out に出力する
v=QVariant(tr("hello")); // バリアントには QString が格納される
inty=v.toInt(); // v は int に変換できないため、y = 0 となる
QString s=v.toString(); // s = tr("hello") (QObject::tr() を参照)
out<<v; // 型タグと QString を out に出力
//...
QDataStream in("..."); // (以前に書き込んだストリームを開く)
in>>v; // Intバリアントを読み込む
intz=v.toInt(); // z = 123
qDebug("Type is %s", // prints "Type is int"
v.typeName());
v=v.toInt()+ 100; // これでバリアントの値は 223 になります
v=QVariant(QStringList()); // このバリアントには、QStringListQList<QVariant> やQMap<QString, QVariant> といった値をバリアントに格納することも可能であり、これにより任意の型の任意に複雑なデータ構造を簡単に構築できます。これは非常に強力で汎用性が高いですが、特定の型を標準的なデータ構造に格納する場合に比べ、メモリと処理速度の効率が劣る可能性があります。
QVariantは、NULL値の概念もサポートしています。バリアントに初期化された値が含まれていない場合、またはNULLポインタが含まれている場合、そのバリアントはNULLとなります。
QVariant は、QMetaType::Type 列挙型で指定されている型以外にも、他の型をサポートするように拡張することができます。詳細については、「カスタム Qt 型の作成」を参照してください。
GUI 型に関する注意
QVariantはQt Core モジュールの一部であるため、Qt GUI で定義されているデータ型(QColor 、QImage 、QPixmap など)への変換関数を提供することはできません。つまり、toColor() 関数は存在しません。代わりに、QVariant::value() またはqvariant_cast() テンプレート関数を使用できます。例:
逆変換(例:QColor から QVariant への変換)は、GUI 関連の型を含め、QVariant がサポートするすべてのデータ型に対して自動的に行われます:
canConvert() と convert() を連続して使用する場合
canConvert() とconvert() を連続して使用する場合、canConvert() が true を返す一方で、convert() が false を返すことがあります。これは通常、canConvert() が、適切なデータが与えられた場合に QVariant が型間で変換できるという一般的な能力のみを報告しているためです。実際には変換できないデータを渡すことは依然として可能です。
例えば、文字列を含むバリアントに対してcanConvert(QMetaType::fromType<int>()) を呼び出すと true が返されます。これは、原則として QVariant が数値の文字列を整数に変換できるためです。 しかし、その文字列に数値以外の文字が含まれている場合、整数への変換は不可能であり、変換を試みても失敗します。したがって、変換が成功したことを確認するには、両方の関数が true を返すようにすることが重要です。
QMetaTypeも参照してください 。
メンバ関数のドキュメント
[noexcept] QVariant::QVariant()
無効なバリアントを構築します。
[noexcept] QVariant::QVariant(QChar c)
char型の値を持つ新しいバリアントを生成します。c 。
QVariant::QVariant(const QPersistentModelIndex &val)
QPersistentModelIndex の値を持つ新しいバリアントを生成します。val 。
[noexcept] QVariant::QVariant(const QRegularExpression &re)
正規表現の値「re 」を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QString &val)
文字列値「val 」を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QStringList &val)
文字列のリスト値(val )を持つ新しいバリアントを生成します。
[noexcept] QVariant::QVariant(const QUrl &val)
URL 値がval となる新しいバリアントを作成します。
QVariant::QVariant(const char *val)
文字列値が `val` の新しいバリアントを生成します。このバリアントは、入力 `val` が UTF-8 エンコーディングであることを前提として、`val ` のディープコピーを `QString ` に作成します。
なお、val はバリアントへの格納のためにQString に変換され、QVariant::userType()はバリアントに対してQMetaType::QString を返します。
アプリケーションのコンパイル時に `QT_NO_CAST_FROM_ASCII ` を定義することで、この演算子を無効にすることができます。
[noexcept] QVariant::QVariant(double val)
浮動小数点値val を持つ新しいバリアントを生成します。
[noexcept] QVariant::QVariant(float val)
浮動小数点値val を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(int val)
整数値val を持つ新しいバリアントを生成します。
[noexcept] QVariant::QVariant(qlonglong val)
long long型の整数値val を持つ新しいバリアントを生成します。
[noexcept] QVariant::QVariant(qulonglong val)
符号なし long long 整数値を持つ新しいバリアントを構築します。val 。
[noexcept] QVariant::QVariant(uint val)
val という符号なし整数値を持つ新しいバリアントを生成します。
[explicit] QVariant::QVariant(QMetaType type, const void *copy = nullptr)
type 型のバリアントを生成し、copy がnullptr でない場合、*copy のコピーで初期化します(その場合、copy はtype 型のオブジェクトを指している必要があります)。
なお、保存したいオブジェクトのアドレスを渡す必要があることに注意してください。
通常、このコンストラクタを使用する必要はありません。代わりに、QVariant::fromValue() を使用して、QMetaType::VoidStar およびQMetaType::QObjectStar で表されるポインタ型からバリアントを構築してください。
type がコピーコンストラクタをサポートしておらず、かつcopy がnullptr でない場合、バリアントは無効になります。同様に、copy がnullptr であり、かつtype がデフォルトコンストラクタをサポートしていない場合、バリアントは無効になります。
QVariant::fromMetaType 、QVariant::fromValue()、およびQMetaType::Typeも参照してください 。
[noexcept, since 6.12] QVariant::QVariant(QBitArray &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QByteArray &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QDateTime &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QEasingCurve &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QHash<QString, QVariant> &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QJsonArray &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QJsonDocument &&val)
これはオーバーロードされた関数です。
この関数はQt 6.12で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QJsonObject &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept(...), since 6.12] QVariant::QVariant(QJsonValue &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
注: Private::FitsInInternalSize<sizeof(CborValueStandIn)> がtrue の場合、この関数はnoexceptとなります 。
[noexcept, since 6.12] QVariant::QVariant(QList<QVariant> &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QLocale &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QMap<QString, QVariant> &&val)
これはオーバーロードされた関数です。
この関数はQt 6.12で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QPersistentModelIndex &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QRegularExpression &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QString &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QStringList &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[noexcept, since 6.12] QVariant::QVariant(QUrl &&val)
これはオーバーロードされた関数です。
この関数は Qt 6.12 で導入されました。
[explicit noexcept(...), since 6.6] template <typename T, typename... Args> requires if_constructible<T, Args...> QVariant::QVariant(std::in_place_type_t<T>, Args &&... args)
T 型の値を含む新しいバリアントを生成します。含まれる値は、引数std::forward<Args>(args)... で初期化されます。
このコンストラクタは、STL/std::any との互換性を確保するために提供されています。
制約
T がargs から構築できる場合にのみ、オーバーロード解決の対象となります。
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
注: is_noexcept_constructible<q20::remove_cvref_t<T>, Args...>::value がtrue の場合、この関数は noexcept です。
[explicit noexcept(...), since 6.6] template <
typename T,
typename U,
typename... Args
> requires if_constructible<T, std::initializer_list<U> &, Args...>
QVariant::QVariant(std::in_place_type_t<T>, std::initializer_list<U> il, Args &&... args)
このオーバーロードは、initializer_list を受け取るコンストラクタを持つ型をサポートするために存在します。その動作は、初期化子リストを含まないin_place_type_t のオーバーロードとそれ以外では同等です。
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
注: is_noexcept_constructible<q20::remove_cvref_t<T>,
std::initializer_list<U> &,
Args...
>::value がtrue の場合、この関数は noexcept です。
[noexcept] QVariant::QVariant(QDate val)
日付値を持つ新しいバリアントを作成します。val 。
QVariant::QVariant(QLatin1StringView val)
val で取得した Latin-1 文字列から、QString 値を持つ新しいバリアントを生成します。
[noexcept(...)] QVariant::QVariant(QLine val)
val の行値を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(int) * 4> が `true` の場合、この関数は `noexcept` です。
[noexcept(...)] QVariant::QVariant(QLineF val)
val の行値を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(qreal) * 4> が `true` の場合、この関数は `noexcept` です。
[noexcept] QVariant::QVariant(QPoint val)
val の点数を持つ新しいバリアントを作成します。
[noexcept(...)] QVariant::QVariant(QPointF val)
val の点数を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(qreal) * 2> がtrue の場合、この関数はnoexceptとなります 。
[noexcept(...)] QVariant::QVariant(QRect val)
val の rect 値を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(int) * 4> が `true` の場合、この関数は `noexcept` です。
[noexcept(...)] QVariant::QVariant(QRectF val)
val の rect 値を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(qreal) * 4> が `true` の場合、この関数は `noexcept` です。
[noexcept] QVariant::QVariant(QSize val)
サイズ値がval となる新しいバリアントを生成します。
[noexcept(...)] QVariant::QVariant(QSizeF val)
サイズ値が `val` の新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(qreal) * 2> がtrue の場合、この関数はnoexceptとなります 。
[noexcept] QVariant::QVariant(QTime val)
時間値を持つ新しいバリアントを生成します。val 。
[noexcept(...)] QVariant::QVariant(QUuid val)
uuid 値を持つ新しいバリアントを構築します。val 。
注: Private::FitsInInternalSize<16> がtrue の場合、この関数は noexcept です。
[delete] template <typename T, std::enable_if_t<std::disjunction_v<std::is_pointer<T>, std::is_member_pointer<T>>, bool> = false> QVariant::QVariant(T)
QVariant のインスタンスをデフォルトで生成します。この関数は削除されました。
[noexcept] QVariant::QVariant(bool val)
ブール値「val 」を持つ新しいバリアントを生成します。
[noexcept] QVariant::QVariant(const QBitArray &val)
ビット配列の値 `val` を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QByteArray &val)
バイト配列の値 `val` を持つ新しいバリアントを構築します。
[noexcept] QVariant::QVariant(const QDateTime &val)
日付および時刻の値(val )を持つ新しいバリアントを作成します。
QVariant::QVariant(const QEasingCurve &val)
イージングカーブの値「val 」を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QHash<QString, QVariant> &val)
QVariantのハッシュ値とval を用いて、新しいバリアントを生成します。
[noexcept] QVariant::QVariant(const QJsonArray &val)
JSON配列の値(val )を持つ新しいバリアントを作成します。
QVariant::QVariant(const QJsonDocument &val)
JSONドキュメント値 `val` を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QJsonObject &val)
JSON オブジェクト値val を持つ新しいバリアントを作成します。
[noexcept(...)] QVariant::QVariant(const QJsonValue &val)
JSON値 `val` を持つ新しいバリアントを生成します。
注: Private::FitsInInternalSize<sizeof(CborValueStandIn)> が `true` の場合、この関数は `noexcept` となります。
[noexcept] QVariant::QVariant(const QList<QVariant> &val)
リスト値を持つ新しいバリアントを作成します。val 。
[noexcept] QVariant::QVariant(const QLocale &l)
ロケール値 `l` を持つ新しいバリアントを作成します。
[noexcept] QVariant::QVariant(const QMap<QString, QVariant> &val)
QVariantのマップを持つ新しいバリアントを構築します。val 。
[noexcept(...)] QVariant::QVariant(const QModelIndex &val)
QModelIndex の値を持つ新しいバリアントを構築します。val 。
注: Private::FitsInInternalSize<8 + 2 * sizeof(quintptr)> がtrue の場合、この関数はnoexceptです 。
QVariant::QVariant(const QVariant &p)
このコンストラクタの引数として渡されたバリアント `p` のコピーを作成します。
[noexcept] QVariant::QVariant(QVariant &&other)
QVariantのインスタンスをムーブコンストラクタで生成し、other が指していたのと同じオブジェクトを指すようにします。
[noexcept] QVariant::~QVariant()
QVariant およびその中に含まれるオブジェクトを破棄します。
template <typename T> bool QVariant::canConvert() const
バリアントがテンプレート型 `T` に変換可能な場合は `true ` を返し、そうでない場合は `false` を返します。
例:
QVariant v = 42;
v.canConvert<int>(); // returns true
v.canConvert<QString>(); // returns true
MyCustomStruct s;
v.setValue(s);
v.canConvert<int>(); // returns false
v.canConvert<MyCustomStruct>(); // returns trueQObject から派生した型へのポインタを含む `QVariant ` であっても、テンプレート型 `T ` への `qobject_cast ` が成功する場合、この関数の戻り値は `true` になります。なお、これは `Q_OBJECT ` マクロを使用している `QObject ` のサブクラスでのみ機能することに注意してください。
convert()も参照してください 。
[since 6.0] bool QVariant::canConvert(QMetaType type) const
バリアントの型が、指定された型 `type` へキャスト可能な場合、true を返します。このようなキャストは、toInt()、toBool() などのメソッドを呼び出す際に自動的に行われます。
この関数は、バリアントの内容ではなく、その型のみを操作することに注意してください。これは、このバリアントからtype への変換パスが存在するかどうかを示すものであり、変換を試みた際に成功するかどうかを示すものではありません。
この関数は Qt 6.0 で導入されました。
QMetaType::canConvert()も参照してください 。
template <typename T> bool QVariant::canView() const
このバリアント上で、テンプレート型 `T ` の可変ビューを作成できる場合は `true ` を返し、そうでない場合は `false` を返します。
value()も参照してください 。
void QVariant::clear()
このバリアントをQMetaType::UnknownType 型に変換し、使用中のリソースをすべて解放してください。
[static, since 6.0] QPartialOrdering QVariant::compare(const QVariant &lhs, const QVariant &rhs)
lhs およびrhs にあるオブジェクトを比較し、順序付けを行います。
比較がサポートされていない場合、または値に順序がない場合は、QPartialOrdering::Unordered を返します。それ以外の場合、lhs がrhs より小さい、等しい、または大きい場合に、それぞれQPartialOrdering::Less 、QPartialOrdering::Equivalent 、またはQPartialOrdering::Greater を返します。
バリアントに異なるメタタイプのデータが含まれている場合、値は順序付けられていないものとみなされます。ただし、両方が数値型またはポインタ型である場合は例外であり、その場合は通常の数値またはポインタの比較規則が適用されます。
注: 数値比較が行われ、 少なくとも 1 つの値が NaN の場合、QPartialOrdering::Unordered が返されます。
両方のバリアントが同じメタタイプのデータを含む場合、このメソッドは `QMetaType::compare ` メソッドを使用して 2 つのバリアントの順序を決定します。これは、2 つの値間の順序を確立できないことを示す場合もあります。
この関数は Qt 6.0 で導入されました。
QMetaType::compare() およびQMetaType::isOrdered()も参照してください 。
格納されているオブジェクトへのポインタを、書き込み不可の汎用型 `void*` として返します。
get_if() およびQMetaTypeも参照してください 。
[since 6.0] bool QVariant::convert(QMetaType targetType)
バリアントを指定された型(targetType )にキャストします。キャストができない場合でも、バリアントは指定された型に変更されますが、QVariant(Type) によって生成されるものと同様の、クリアされた null 状態のままになります。
バリアントの現在の型が正常にキャストされた場合は `true ` を返し、そうでない場合は `false` を返します。
QObject から派生した型へのポインタを含む `QVariant ` も、targetType で記述された型への `qobject_cast ` が成功する場合、この関数によって変換され、`true` を返します。これは、Q_OBJECT マクロを使用する `QObject ` のサブクラスでのみ機能することに注意してください。
注: 初期化されていない、または以前の変換に失敗したためにnullとなっているQVariantの変換は 常に失敗し、型が変更され、nullのままとなり、false が返されます。
この関数はQt 6.0で導入されました。
canConvert() およびclear()も参照してください 。
void *QVariant::data()
格納されているオブジェクトへのポインタを、書き込み可能な汎用 void* として返します。
この関数は、QVariant を解除します。null-QVariant に対して呼び出された場合、呼び出し後、QVariant はnullにはなりません。
get_if() およびQMetaTypeも参照してください 。
[since 6.6] template <typename T, typename... Args> requires if_constructible<T, Args...> T &QVariant::emplace(Args &&... args)
*this に現在保持されているオブジェクトを、args... から生成されたT 型のオブジェクトに置き換えます。*this がnullでない場合、以前に保持されていたオブジェクトはまず破棄されます。可能であれば、このメソッドはQVariant によって割り当てられたメモリを再利用します。新しく作成されたオブジェクトへの参照を返します。
この関数は Qt 6.6 で導入されました。
[since 6.6] template <
typename T,
typename U,
typename... Args
> requires if_constructible<T, std::initializer_list<U> &, Args...>
T &QVariant::emplace(std::initializer_list<U> list, Args &&... args)
このオーバーロードは、initializer_list を受け取るコンストラクタを持つ型をサポートするために存在します。その動作は、初期化子リストを指定しないオーバーロードとそれ以外は同等です。
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
[static, since 6.7] QVariant QVariant::fromMetaType(QMetaType type, const void *copy = nullptr)
type 型のバリアントを作成し、copy がnullptr でない場合、*copy のコピーで初期化します(その場合は、copy はtype 型のオブジェクトを指している必要があります)。
なお、格納したいオブジェクトのアドレスを渡す必要があることに注意してください。
通常、このコンストラクタを使用する必要はありません。代わりに、QVariant::fromValue() を使用して、QMetaType::VoidStar およびQMetaType::QObjectStar で表されるポインタ型からバリアントを構築してください。
type がコピーコンストラクタをサポートしておらず、かつcopy がnullptr でない場合、バリアントは無効になります。同様に、copy がnullptr であり、かつtype がデフォルトコンストラクタをサポートしていない場合、バリアントは無効になります。
上記の手順に従って作成されたQVariant を返します。
この関数は Qt 6.7 で導入されました。
QVariant::fromValue() およびQMetaType::Typeも参照してください 。
[static] template <typename... Types> QVariant QVariant::fromStdVariant(const std::variant<Types...> &value)
value のアクティブなバリアントの型と値を持つQVariant を返します。アクティブな型がstd::monostateの場合、デフォルトのQVariant が返されます。
注: このメソッドを使用する場合、 std::variantは格納される前に解決されるため、バリアントをQtメタタイプとして登録する必要はありません。ただし、コンポーネント型は登録する必要があります。
fromValue()も参照してください 。
[static, since 6.6] template <typename... Types> QVariant QVariant::fromStdVariant(std::variant<Types...> &&value)
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
[static] template <typename T> QVariant QVariant::fromValue(const T &value)
value のコピーを含む `QVariant ` を返します。それ以外の点では、setValue() とまったく同じように動作します。
例:
MyCustomStruct s;
return QVariant::fromValue(s);setValue() およびvalue()も参照してください 。
[static, since 6.6] template <typename T> requires if_rvalue<T> QVariant QVariant::fromValue(T &&value)
これはオーバーロードされた関数です。
この関数は Qt 6.6 で導入されました。
bool QVariant::isNull() const
これがヌルバリアントの場合は `true ` を返し、それ以外の場合は `false` を返します。
バリアントは、初期化された値を含んでいないか、または null ポインタを含む場合に null とみなされます。
注:この 動作は Qt 5 から変更されました。Qt 5 では、バリアントに、そのオブジェクトに対して isNull() メソッドが true を返す組み込み型のオブジェクトが含まれている場合にも、isNull() は true を返していました。
convert()も参照してください 。
bool QVariant::isValid() const
このバリアントのストレージ型がQMetaType::UnknownType でない場合はtrue を返し、それ以外の場合はfalse を返します。
[since 6.0] QMetaType QVariant::metaType() const
バリアントに格納されている値のQMetaType を返します。
この関数は Qt 6.0 で導入されました。
void QVariant::setValue(QVariant &&value)
value を thisQVariant の上へ移動します。これは、単にvalue を thisQVariant に代入するのと同じことです。
value()も参照してください 。
template <typename T, typename = std::enable_if_t<!std::is_same_v<std::decay_t<T>, QVariant>>> void QVariant::setValue(T &&value)
value のコピーを格納します。T がQVariant でサポートされていない型の場合、QMetaType が値の格納に使用されます。QMetaType がその型を処理できない場合、コンパイルエラーが発生します。
例:
QVariant v;
v.setValue(5);
int i = v.toInt(); // i is now 5
QString s = v.toString(); // s is now "5"
MyCustomStruct c;
v.setValue(c);
//...
MyCustomStruct c2 = v.value<MyCustomStruct>();関連項目: value()、fromValue()、およびcanConvert()。
void QVariant::setValue(const QVariant &value)
value をQVariant にコピーします。これは、単にvalue をQVariant に代入するのと同じです。
[noexcept] void QVariant::swap(QVariant &other)
このバリアントをother と入れ替えます。この操作は非常に高速で、失敗することはありません。
QBitArray QVariant::toBitArray() const
そのバリアントがuserType()QMetaType::QBitArray を満たす場合、そのバリアントをQBitArray として返します。そうでない場合は、空のビット配列を返します。
canConvert() およびconvert()も参照してください 。
bool QVariant::toBool() const
バリアントがuserType() Boolを満たしている場合、そのバリアントをboolとして返します。
バリアントがuserType()QMetaType::Bool 、QMetaType::QChar 、QMetaType::Double 、QMetaType::Int 、QMetaType::LongLong 、QMetaType::UInt 、またはQMetaType::ULongLong を持ち、かつその値が 0 以外である場合、あるいはバリアントがQMetaType::QString またはQMetaType::QByteArray 型であり、その小文字のコンテンツが empty、"0"、または "false" のいずれでもない場合に、true を返します。それ以外の場合は、false を返します。
canConvert() およびconvert()も参照してください 。
QByteArray QVariant::toByteArray() const
そのバリアントが `userType()`、`QMetaType::QByteArray `、または `QMetaType::QString `(QString::fromUtf8() を使用して変換されたもの)のいずれかである場合、そのバリアントを `QByteArray ` として返します。それ以外の場合は、空のバイト配列を返します。
canConvert() およびconvert()も参照してください 。
QChar QVariant::toChar() const
バリアントが `userType()`、`QMetaType::QChar`、`QMetaType::Int`、または `QMetaType::UInt` のいずれかを満たす場合、そのバリアントを `QChar ` として返します。それ以外の場合は、無効な `QChar` を返します。
canConvert() およびconvert()も参照してください 。
QDate QVariant::toDate() const
バリアントが `userType()`、`QMetaType::QDate`、`QMetaType::QDateTime`、または`QMetaType::QString`のいずれかである場合、そのバリアントをQDate として返します。それ以外の場合は、無効な日付を返します。
metaType() がQMetaType::QString の場合、その文字列がQt::ISODate 形式の日付として解析できないときは、無効な日付が返されます。
canConvert() およびconvert()も参照してください 。
QDateTime QVariant::toDateTime() const
バリアントが `userType()`、`QMetaType::QDateTime`、`QMetaType::QDate`、または `QMetaType::QString` のいずれかを保持している場合、そのバリアントを `QDateTime ` として返します。それ以外の場合は、無効な日付/時刻を返します。
metaType() がQMetaType::QString の場合、文字列がQt::ISODate 形式の日付/時刻として解析できないと、無効な日付/時刻が返されます。
canConvert() およびconvert()も参照してください 。
double QVariant::toDouble(bool *ok = nullptr) const
バリアントがuserType()QMetaType::Double 、QMetaType::Float 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::Int 、QMetaType::LongLong 、QMetaType::QString 、QMetaType::UInt 、またはQMetaType::ULongLong のいずれかである場合、そのバリアントを double 型として返します。それ以外の場合は 0.0 を返します。
ok が null 以外の場合:*ok は、その値が double に変換可能な場合に true に設定されます。それ以外の場合は、*ok が false に設定されます。
canConvert() およびconvert()も参照してください 。
QEasingCurve QVariant::toEasingCurve() const
そのバリアントがuserType()QMetaType::QEasingCurve を持つ場合は、そのバリアントをQEasingCurve として返します。それ以外の場合は、デフォルトのイージングカーブを返します。
canConvert() およびconvert()も参照してください 。
float QVariant::toFloat(bool *ok = nullptr) const
バリアントが `userType()`、`QMetaType::Double`、`QMetaType::Float`、`QMetaType::Bool`、`QMetaType::QByteArray`、`QMetaType::Int`、`QMetaType::LongLong`、`QMetaType::QString`、`QMetaType::UInt`、または `QMetaType::ULongLong` のいずれかを保持している場合、そのバリアントを浮動小数点数として返します。それ以外の場合は 0.0 を返します。
ok が null 以外の場合:*ok は、その値が double に変換可能な場合に true に設定されます。それ以外の場合は、*ok は false に設定されます。
canConvert() およびconvert()も参照してください 。
QHash<QString, QVariant> QVariant::toHash() const
バリアントが `metaType()` `QMetaType::QVariantHash` を満たしている場合、そのバリアントを `QHash<QString,QVariant>` の形式で返します。満たしていない場合、QVariant は型をハッシュに変換しようとし、変換に成功した場合はそれを返します。これは、`QVariantHash ` にコンバータを登録している型、または `Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE` を使用して連想コンテナとして宣言された型であれば、すべて成功します。これらの条件のいずれも満たさない場合、この関数は空のハッシュを返します。
canConvert() およびconvert()も参照してください 。
int QVariant::toInt(bool *ok = nullptr) const
バリアントがuserType()、QMetaType::Int 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::QChar 、QMetaType::Double 、QMetaType::LongLong 、QMetaType::QString 、QMetaType::UInt 、またはQMetaType::ULongLong を持っている場合、そのバリアントを int として返します。それ以外の場合は 0 を返します。
ok が null 以外の場合:*ok は、その値が int に変換可能な場合に true に設定されます。それ以外の場合、*ok は false に設定されます。
警告:値がQMetaType::LongLong に変換可能であっても、intで表現するには大きすぎる場合、その結果生じる算術オーバーフローはok には反映されません。簡単な回避策として、QString::toInt()を使用してください。
canConvert() およびconvert()も参照してください 。
QJsonArray QVariant::toJsonArray() const
そのバリアントがuserType()QJsonArray を満たす場合、そのバリアントをQJsonArray として返します。そうでない場合は、デフォルト構築されたQJsonArray を返します。
canConvert() およびconvert()も参照してください 。
QJsonDocument QVariant::toJsonDocument() const
そのバリアントがuserType()QJsonDocument を満たしている場合は、そのバリアントをQJsonDocument として返します。そうでない場合は、デフォルト構築されたQJsonDocument を返します。
canConvert() およびconvert()も参照してください 。
QJsonObject QVariant::toJsonObject() const
そのバリアントがuserType()QJsonObject を満たしている場合は、そのバリアントをQJsonObject として返します。そうでない場合は、デフォルト構築されたQJsonObject を返します。
canConvert() およびconvert()も参照してください 。
QJsonValue QVariant::toJsonValue() const
そのバリアントがuserType()QJsonValue を満たしている場合は、そのバリアントをQJsonValue として返します。そうでない場合は、デフォルト構築されたQJsonValue を返します。
canConvert() およびconvert()も参照してください 。
QLine QVariant::toLine() const
そのバリアントが `userType()` `QMetaType::QLine` を満たす場合、そのバリアントを `QLine ` として返します。そうでない場合は、無効な `QLine` を返します。
canConvert() およびconvert()も参照してください 。
QLineF QVariant::toLineF() const
そのバリアントが `userType()` `QMetaType::QLineF` を満たす場合、そのバリアントを `QLineF ` として返します。そうでない場合は、無効な `QLineF` を返します。
canConvert() およびconvert()も参照してください 。
QList<QVariant> QVariant::toList() const
バリアントが `userType()`QMetaType::QVariantList を備えている場合、そのバリアントを `QVariantList ` として返します。備えていない場合、QVariant は型をリストに変換しようとし、それを返します。これは、QVariantList へのコンバータが登録されている型、または `Q_DECLARE_SEQUENTIAL_CONTAINER_METATYPE` を使用してシーケンシャルコンテナとして宣言された型であれば、すべて成功します。これらの条件のいずれも満たさない場合、この関数は空のリストを返します。
canConvert() およびconvert()も参照してください 。
QLocale QVariant::toLocale() const
そのバリアントが `userType()` および `QMetaType::QLocale` を満たす場合、そのバリアントを `QLocale ` として返します。そうでない場合は、無効な `QLocale` を返します。
canConvert() およびconvert()も参照してください 。
qlonglong QVariant::toLongLong(bool *ok = nullptr) const
バリアントが `userType()`、QMetaType::LongLong 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::QChar 、QMetaType::Double 、QMetaType::Int 、QMetaType::QString 、QMetaType::UInt 、またはQMetaType::ULongLong を持つ場合、そのバリアントを `long long int` として返します。それ以外の場合は 0 を返します。
ok が null 以外の場合:*ok は、その値が int に変換可能な場合に true に設定され、それ以外の場合は*ok が false に設定されます。
canConvert() およびconvert()も参照してください 。
QMap<QString, QVariant> QVariant::toMap() const
バリアントが `metaType()` および `QMetaType::QVariantMap` をサポートしている場合、そのバリアントを `QVariantMap ` として返します。サポートしていない場合、QVariant はその型をマップに変換しようとし、変換に成功すればそれを返します。これは、QVariantMap へのコンバータを登録している型、または `Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE` を使用して連想コンテナとして宣言された型であれば、すべて成功します。これらの条件のいずれも満たさない場合、この関数は空のマップを返します。
canConvert() およびconvert()も参照してください 。
QModelIndex QVariant::toModelIndex() const
バリアントがuserType()QModelIndex を満たしている場合は、そのバリアントをQModelIndex として返します。そうでない場合は、デフォルト構築されたQModelIndex を返します。
canConvert()、convert()、およびtoPersistentModelIndex()も参照してください 。
QPersistentModelIndex QVariant::toPersistentModelIndex() const
バリアントが `userType()` `QPersistentModelIndex` を満たしている場合は、そのバリアントを `QPersistentModelIndex ` として返します。それ以外の場合は、デフォルト構築された `QPersistentModelIndex` を返します。
canConvert()、convert()、およびtoModelIndex()も参照してください 。
QPoint QVariant::toPoint() const
バリアントが `userType()`、`QMetaType::QPoint `、または `QMetaType::QPointF` を返す場合、そのバリアントを `QPoint ` として返します。それ以外の場合は、`null` である `QPoint` を返します。
canConvert() およびconvert()も参照してください 。
QPointF QVariant::toPointF() const
バリアントにuserType()QMetaType::QPoint またはQMetaType::QPointF が含まれている場合は、そのバリアントをQPointF として返します。それ以外の場合は、nullのQPointF を返します。
canConvert() およびconvert()も参照してください 。
qreal QVariant::toReal(bool *ok = nullptr) const
バリアントが以下のいずれかの値を持つ場合、そのバリアントを qreal として返します:userType()、QMetaType::Double 、QMetaType::Float 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::Int 、QMetaType::LongLong 、QMetaType::QString 、QMetaType::UInt 、またはQMetaType::ULongLong 。それ以外の場合は 0.0 を返します。
ok が null 以外の場合:*ok は、その値が double に変換可能な場合に true に設定され、そうでない場合は*ok が false に設定されます。
canConvert() およびconvert()も参照してください 。
QRect QVariant::toRect() const
そのバリアントが `userType()` `QMetaType::QRect` を満たす場合、そのバリアントを `QRect ` として返します。そうでない場合は、無効な `QRect` を返します。
canConvert() およびconvert()も参照してください 。
QRectF QVariant::toRectF() const
バリアントがuserType()、QMetaType::QRect 、またはQMetaType::QRectF のいずれかを満たしている場合は、そのバリアントをQRectF として返します。それ以外の場合は、無効なQRectF を返します。
canConvert() およびconvert()も参照してください 。
QRegularExpression QVariant::toRegularExpression() const
そのバリアントが `userType()`QRegularExpression を満たす場合、そのバリアントを `QRegularExpression ` として返します。それ以外の場合は、空の `QRegularExpression` を返します。
canConvert() およびconvert()も参照してください 。
QSize QVariant::toSize() const
そのバリアントが `userType()` を満たす場合、そのバリアントを `QSize ` として返します。QMetaType::QSize ;そうでない場合は、無効な `QSize` を返します。
canConvert() およびconvert()も参照してください 。
QSizeF QVariant::toSizeF() const
そのバリアントが `userType()` `QMetaType::QSizeF` を満たす場合、そのバリアントを `QSizeF ` として返します。そうでない場合は、無効な `QSizeF` を返します。
canConvert() およびconvert()も参照してください 。
QString QVariant::toString() const
そのバリアントにuserType()が含まれている場合、そのバリアントをQString として返します。これには、以下が含まれますが、これらに限定されません:
QMetaType::QString QMetaType::Bool 、 、 、 、 、 、 、 、 、 、 、または 。QMetaType::QByteArray QMetaType::QChar QMetaType::QDate QMetaType::QDateTime QMetaType::Double QMetaType::Int QMetaType::LongLong QMetaType::QStringList QMetaType::QTime QMetaType::UInt QMetaType::ULongLong
サポートされていないバリアントに対して QVariant::toString() を呼び出すと、空の文字列が返されます。
canConvert() およびconvert()も参照してください 。
QStringList QVariant::toStringList() const
バリアントが、QString に変換可能な型のuserType()、QMetaType::QStringList 、QMetaType::QString 、またはQMetaType::QVariantList を持つ場合、そのバリアントをQStringList として返します。それ以外の場合は、空のリストを返します。
canConvert() およびconvert()も参照してください 。
QTime QVariant::toTime() const
バリアントが `userType()`、`QMetaType::QTime`、`QMetaType::QDateTime`、または `QMetaType::QString` のいずれかを返す場合、そのバリアントを `QTime ` として返します。それ以外の場合は、無効な時刻を返します。
metaType() がQMetaType::QString の場合、その文字列がQt::ISODate 形式の時刻として解析できないときは、無効な時刻が返されます。
canConvert() およびconvert()も参照してください 。
uint QVariant::toUInt(bool *ok = nullptr) const
バリアントがuserType()、QMetaType::UInt 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::QChar 、QMetaType::Double 、QMetaType::Int 、QMetaType::LongLong 、QMetaType::QString 、またはQMetaType::ULongLong のいずれかを有する場合、そのバリアントをunsigned intとして返します。それ以外の場合は0を返します。
ok が null 以外の場合:*ok は、値が unsigned int に変換可能な場合に true に設定されます。それ以外の場合は、*ok は false に設定されます。
警告:値がQMetaType::ULongLong に変換可能であるが、unsigned intで表現するには大きすぎる場合、その結果生じる算術オーバーフローはok には反映されません。簡単な回避策として、QString::toUInt()を使用してください。
canConvert() およびconvert()も参照してください 。
qulonglong QVariant::toULongLong(bool *ok = nullptr) const
バリアントがmetaType()、QMetaType::ULongLong 、QMetaType::Bool 、QMetaType::QByteArray 、QMetaType::QChar 、QMetaType::Double 、QMetaType::Int 、QMetaType::LongLong 、QMetaType::QString 、またはQMetaType::UInt のいずれかを定義している場合、そのバリアントを unsigned long long int として返します。それ以外の場合は 0 を返します。
ok が null 以外の場合:*ok は、その値が int に変換可能な場合に true に設定されます。それ以外の場合は、*ok が false に設定されます。
canConvert() およびconvert()も参照してください 。
QUrl QVariant::toUrl() const
そのバリアントがuserType()QMetaType::QUrl を持つ場合は、そのバリアントをQUrl として返します。そうでない場合は、無効なQUrl を返します。
canConvert() およびconvert()も参照してください 。
QUuid QVariant::toUuid() const
バリアントが `metaType()`、`QMetaType::QUuid`、`QMetaType::QByteArray `、または `QMetaType::QString` のいずれかを満たす場合、そのバリアントを `QUuid ` として返します。それ以外の場合は、デフォルト生成された `QUuid` を返します。
canConvert() およびconvert()も参照してください 。
バリアントに格納されている値の格納型を返します。これは、metaType().id() と同じです。
metaType()も参照してください 。
const char *QVariant::typeName() const
バリアントに格納されている型の名前を返します。返される文字列は、データの格納に使用されている C++ データ型を表します。たとえば、「QFont 」、「QString 」、または「QVariantList 」などです。無効なバリアントの場合は 0 が返されます。
template <typename T> T QVariant::value() const &
格納されている値を、テンプレート型T に変換して返します。型が変換可能かどうかを確認するには、canConvert()を呼び出してください。値が変換できない場合は、デフォルト構築された値が返されます。
QVariant が型T をサポートしている場合、この関数の動作はtoString()やtoInt()などと同様です。
例:
QVariant v;
MyCustomStruct c;
if (v.canConvert<MyCustomStruct>())
c = v.value<MyCustomStruct>();
v = 7;
int i = v.value<int>(); // same as v.toInt()
QString s = v.value<QString>(); // same as v.toString(), s is now "7"
MyCustomStruct c2 = v.value<MyCustomStruct>(); // conversion failed, c2 is emptyQVariant にQObject から派生した型へのポインタが含まれている場合、T は任意のQObject 型になる可能性があります。QVariant に格納されているポインタが T へのqobject_cast である場合、その結果が返されます。それ以外の場合はnullptr が返されます。なお、これはQ_OBJECT マクロを使用するQObject のサブクラスでのみ機能することに注意してください。
QVariant にシーケンシャルコンテナが含まれており、T がQVariantList である場合、コンテナの要素はQVariantに変換され、QVariantList として返されます。
QList<int>intList={7, 11, 42};
QVariant variant=QVariant::fromValue(intList);
if(variant.canConvert<QVariantList>()) {
QMetaSequence::Iterable iterable=variant.value<QMetaSequence::Iterable>();
// C++11のrange-forが使用可能:
for(constQVariant&v: iterable) {
qDebug() << v;
}
// イテレータを使用できます:
QMetaSequence::Iterable::const_iteratorit=iterable.begin();
constQMetaSequence::Iterable::const_iteratorend=iterable.end();
for( ; it!=end;++it) {
qDebug() << *it;
}
}setValue()、fromValue()、canConvert()、およびQ_DECLARE_SEQUENTIAL_CONTAINER_METATYPE()も参照してください 。
template <typename T> T QVariant::view()
格納された値に対して、テンプレート型T の可変ビューを返します。 そのようなビューがサポートされているかどうかを確認するには、canView() を呼び出してください。そのようなビューを作成できない場合は、格納された値をテンプレート型T に変換した値を返します。型を変換できるかどうかを確認するには、canConvert() を呼び出してください。値をビューとして扱うことも変換することもできない場合は、デフォルトコンストラクタで生成された値が返されます。
canView() およびQ_DECLARE_SEQUENTIAL_CONTAINER_METATYPE()も参照してください 。
[noexcept] QVariant &QVariant::operator=(QVariant &&other)
other をこのQVariant インスタンスに割り当てます。
QVariant &QVariant::operator=(const QVariant &variant)
バリアント「variant 」の値がこのバリアントに割り当てられます。
関連する非メンバー
[alias] QVariantHash
QHash の同義語 <QString,QVariant>。
[alias] QVariantList
[alias] QVariantMap
[since 6.6] template <typename T> T &get(QVariant &v)
[since 6.6] template <typename T> T &&get(QVariant &&v)
[since 6.6] template <typename T> const T &get(const QVariant &v)
[since 6.6] template <typename T> const T &&get(const QVariant &&v)
v にT 型のオブジェクトが含まれている場合、そのオブジェクトへの参照を返します。そうでない場合、この呼び出しは未定義の挙動を示します。
可変の `v ` を受け取るオーバーロードは、`v` を切り離します。型 `T` と一致する `null ` `v ` に対して呼び出された場合、呼び出し後の `v ` は `null` にはなりません。
これらの関数は、std::variant との互換性を確保するために提供されています。
これらの関数は Qt 6.6 で導入されました。
[noexcept, since 6.6] template <typename T> T *get_if(QVariant *v)
[noexcept, since 6.6] template <typename T> const T *get_if(const QVariant *v)
v にT 型のオブジェクトが含まれている場合は、そのオブジェクトへのポインタを返し、そうでない場合はnullptr を返します。
可変の `v ` を受け取るオーバーロードは、`v` を切り離します。型 `T` と一致する `null ` `v ` に対して呼び出された場合、呼び出し後の `v ` は `null` にはなりません。
これらの関数は、std::variant との互換性を確保するために提供されています。
これらの関数は Qt 6.6 で導入されました。
data()も参照してください 。
template <typename T> T qvariant_cast(const QVariant &value)
指定されたvalue を、テンプレート型T に変換したものを返します。
この関数は、QVariant::value() と同等です。
QVariant::value()も参照してください 。
[since 6.7] template <typename T> T qvariant_cast(QVariant &&value)
指定されたvalue を、テンプレート型T に変換したものを返します。
これはオーバーロードされた関数です。
この関数は Qt 6.7 で導入されました。
[noexcept] bool operator!=(const QVariant &lhs, const QVariant &rhs)
lhs とrhs が等しい場合はfalse を返し、そうでない場合はtrue を返します。
QVariant 含まれる `metaType()` の等価演算子を使用して、等価性をチェックします。
いくつかの例外を除き、異なる型のバリアントは常に不等とみなされます。
- 両方の型が数値型(整数および浮動小数点数)である場合、Qtは標準のC++型昇格ルールを使用してそれらの型を比較します。
- 一方の型が数値型で、もう一方がQString である場合、QtはQString を対応する数値型に変換しようと試み、成功した場合はそれらを比較します。
- 両方の変数がQObject 派生型へのポインタを含む場合、QVariant は、それらの型が関連しており、同じオブジェクトを指しているかどうかを確認します。
QDataStream &operator<<(QDataStream &s, const QVariant &p)
バリアントp をストリームs に書き込みます。
「QDataStream 演算子の形式」も参照してください 。
[noexcept] bool operator==(const QVariant &lhs, const QVariant &rhs)
lhs とrhs が等しい場合は `true ` を返し、そうでない場合は `false` を返します。
QVariant 含まれる `metaType()` の等価演算子を使用して、等価性をチェックします。
いくつかの例外を除き、異なる型のバリアントは常に不等とみなされます。
- 両方の型が数値型(整数および浮動小数点数)である場合、Qtは標準のC++型昇格ルールを使用してそれらの型を比較します。
- 一方の型が数値型で、もう一方がQString の場合、QtはQString を対応する数値型に変換しようと試み、成功した場合はそれらを比較します。
- 両方の変数がQObject 派生型のポインタを含む場合、QVariant は、それらの型が関連しており、同じオブジェクトを指しているかどうかを確認します。
この関数の結果は、QVariant::isNull の結果の影響を受けません。つまり、一方の値がnullで、もう一方がnullでない場合でも、2つの値が等しくなることがあります。
QDataStream &operator>>(QDataStream &s, QVariant &p)
ストリーム `s` からバリアント `p ` を読み込みます。
注: ストリームに組み込み型以外の型が含まれている場合 (QMetaType::Type を参照)、その型をqRegisterMetaType() またはQMetaType::registerType() を使用して登録してからでないと、バリアントを正しく読み込むことはできません。未登録の型が見つかった場合、QVariant はストリームの破損フラグを設定し、処理を停止して警告を出力します。 たとえば、QList<int> の場合、次のように出力されます。
QVariant::load: 名前がQList<int> の未知のユーザー型
QDataStream 演算子の形式も参照してください 。
© 2026 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.