QVariant Class

QVariant 클래스는 가장 일반적인 Qt 데이터 유형에 대한 유니온처럼 작동합니다. 더 보기...

Header: #include <QVariant>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

이 클래스는 동등 비교가 가능합니다.

공용 함수

QVariant()
QVariant(QChar c)
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.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(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 QPersistentModelIndex &val)
QVariant(const QRegularExpression &re)
QVariant(const QString &val)
QVariant(const QStringList &val)
QVariant(const QUrl &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)

상세 설명

C++는 유니온에 기본 생성자나 소멸자가 아닌 형을 포함하는 것을 금지하기 때문에, 대부분의 흥미로운 Qt 클래스는 유니온에서 사용할 수 없습니다. QVariant가 없으면 QObject::property() 및 데이터베이스 작업 등에서 문제가 될 수 있습니다.

QVariant 객체는 한 번에 단일 typeId()의 단일 값을 보유합니다. (문자열 목록과 같이 일부 유형은 다중 값입니다.) 변형이 보유하고 있는 유형인 T를 확인하고, convert()를 사용하여 다른 유형으로 변환하고, toT () 함수 중 하나를 사용하여 값을 가져오고(예: toSize()), canConvert()를 사용하여 유형을 특정 유형으로 변환할 수 있는지 확인할 수 있습니다.

toT()(예: toInt(), toString())라는 이름의 메서드는 const입니다. 저장된 타입을 요청하면 저장된 객체의 복사본을 반환합니다. 저장된 타입에서 생성할 수 있는 타입을 요청하면 toT()는 복사하여 변환하고 객체 자체는 변경되지 않은 채로 둡니다. 저장된 타입에서 생성할 수 없는 타입을 요청하는 경우 결과는 타입에 따라 달라지며, 자세한 내용은 함수 설명서를 참조하세요.

다음은 QVariant의 사용을 보여주는 몇 가지 예제 코드입니다:

QDataStream out(...);QVariant v(123); // 이제 변종에 정수가 포함됩니다.int x = v.toInt(); // x = 123out<< v; // 유형 태그와 정수를 out에 씁니다. v = QVariant(tr("hello")); // 이제 이 변수는 QString을 포함합니다int y = v.toInt(); // v는 정수로 변환할 수 없으므로 y = 0입니다.QString s = v.toString(); // s = tr("hello") (QObject::tr() 참조)out<< v; // 타입 태그와 QString을 out에 씁니다...QDataStream in(...); // (이전에 쓴 스트림 열기)in>> v; // Int 변형을 읽습니다int z = v.toInt(); // z = 123qDebug("Type is %s",            // prints "Type is int"
        v.typeName()); v = v.toInt() + 100; // 이제 이형 변수는 223 값을 보유합니다.QVariant(QStringList()); // 이제 이형 변수가 QStringList
보유합니다.

QList<QVariant> 및 QMap<QString, QVariant> 값을 변형에 저장할 수도 있으므로 임의의 유형의 임의의 복잡한 데이터 구조를 쉽게 구성할 수 있습니다. 이는 매우 강력하고 다재다능하지만 표준 데이터 구조에 특정 유형을 저장하는 것보다 메모리와 속도 효율성이 떨어질 수 있습니다.

QVariant는 null 값의 개념도 지원합니다. 변형이 초기화된 값을 포함하지 않거나 널 포인터를 포함하는 경우 변형은 널 값입니다.

QVariant x;                                // x.isNull() == true
QVariant y = QVariant::fromValue(nullptr); // y.isNull() == true

QVariant는 QMetaType::Type 열거형에 언급된 것 이외의 다른 유형을 지원하도록 확장할 수 있습니다. 자세한 내용은 사용자 정의 Qt 유형 만들기를 참조하십시오.

GUI 유형에 대한 참고 사항

QVariant는 Qt Core 모듈의 일부이므로 QColor, QImage, QPixmap 와 같은 Qt GUI 에 정의된 데이터 유형으로 변환 함수를 제공할 수 없습니다. 즉, toColor() 함수가 없습니다. 대신 QVariant::value() 또는 qvariant_cast() 템플릿 함수를 사용할 수 있습니다. 예를 들어

QVariant variant;
...
QColor color = variant.value<QColor>();

역변환(예: QColor 에서 QVariant 로)은 GUI 관련 유형을 포함하여 QVariant에서 지원하는 모든 데이터 유형에 대해 자동으로 수행됩니다:

QColor color = palette().background().color();
QVariant variant = color;

canConvert() 및 convert() 연속 사용

canConvert() 및 convert()를 연속적으로 사용할 때 canConvert()는 참을 반환하지만 convert()는 거짓을 반환할 수 있습니다. 이는 일반적으로 canConvert()는 적절한 데이터가 주어졌을 때 유형 간에 변환하는 QVariant의 일반적인 기능만 보고하기 때문에 실제로 변환할 수 없는 데이터도 제공할 수 있기 때문입니다.

예를 들어, canConvert(QMetaType::fromType<int>()) 은 원칙적으로 숫자 문자열을 정수로 변환할 수 있기 때문에 문자열이 포함된 변형에 대해 호출하면 참을 반환합니다. 그러나 문자열에 숫자가 아닌 문자가 포함되어 있으면 정수로 변환할 수 없으며 변환 시도가 실패합니다. 따라서 성공적인 변환을 위해서는 두 함수 모두 참을 반환하는 것이 중요합니다.

QMetaType참조하세요 .

멤버 함수 문서

int QVariant::typeId() const

int QVariant::userType() const

변형에 저장된 값의 저장 유형을 반환합니다. metaType ().id()와 동일합니다.

metaType()도 참조하세요 .

const void *QVariant::constData() const

const void *QVariant::data() const

포함된 객체에 대한 포인터를 쓸 수 없는 일반 공백*으로 반환합니다.

get_if() 및 QMetaType참조하세요 .

[noexcept] QVariant::QVariant()

유효하지 않은 변형을 생성합니다.

[noexcept] QVariant::QVariant(QChar c)

문자 값 c 으로 새 변형을 생성합니다.

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)

긴 긴 정수 값인 val 으로 새로운 변형을 생성합니다.

[noexcept] QVariant::QVariant(qulonglong val)

부호 없는 긴 정수 값 val 으로 새 변형을 생성합니다.

[noexcept] QVariant::QVariant(uint val)

부호 없는 정수 값 val 으로 새 변형을 생성합니다.

[explicit] QVariant::QVariant(QMetaType type, const void *copy = nullptr)

type 유형의 변형을 생성하고 copynullptr 이 아닌 경우 *copy 의 복사본으로 초기화합니다(이 경우 copytype 유형의 객체를 가리켜야 합니다).

저장하려는 객체의 주소를 전달해야 한다는 점에 유의하세요.

일반적으로 이 생성자를 사용할 필요는 없으며 대신 QVariant::fromValue()를 사용하여 QMetaType::VoidStarQMetaType::QObjectStar 로 표시되는 포인터 유형에서 변형을 구성합니다.

type 이 복사 구성을 지원하지 않고 copynullptr 이 아닌 경우 변형은 유효하지 않습니다. 마찬가지로 copynullptr 이고 type 가 기본 구성을 지원하지 않는 경우 변형은 유효하지 않습니다.

QVariant::fromMetaType, QVariant::fromValue() 및 QMetaType::Type참조하세요 .

[explicit noexcept(...), since 6.6] template <typename T, typename... Args, QVariant::if_constructible<T, Args...> = true> QVariant::QVariant(std::in_place_type_t<T>, Args &&... args)

T 타입의 값을 포함하는 새 변형을 생성합니다. 포함된 값은 인자 std::forward<Args>(args)... 로 초기화됩니다.

이 생성자는 STL/std::any 호환성을 위해 제공됩니다.

이 함수는 오버로드된 함수입니다.

제약 조건

args 에서 T 를 만들 수 있는 경우에만 과부하 해결에 참여합니다.

이 함수는 Qt 6.6에 도입되었습니다.

참고: 이 함수는 is_noexcept_constructible<q20::remove_cvref_t<T>, Args...>::valuetrue 일 때를 제외하고는 사용되지 않습니다.

[explicit noexcept(...), since 6.6] template <typename T, typename U, typename... Args, QVariant::if_constructible<T, std::initializer_list<U> &, Args...> = true> 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... >::valuetrue 인 경우를 제외하고는 사용되지 않습니다.

[noexcept] QVariant::QVariant(QDate val)

날짜 값 val 으로 새 변형을 생성합니다.

QVariant::QVariant(QLatin1StringView val)

val 에서 조회한 라틴-1 문자열에서 QString 값을 사용하여 새 변형을 만듭니다.

[noexcept(...)] QVariant::QVariant(QLine val)

줄 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(int) * 4>true 일 때를 제외하고는 사용되지 않습니다.

[noexcept(...)] QVariant::QVariant(QLineF val)

줄 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(qreal) * 4>true 일 때를 제외하고는 사용되지 않습니다.

[noexcept] QVariant::QVariant(QPoint val)

포인트 값이 val 인 새 변형을 생성합니다.

[noexcept(...)] QVariant::QVariant(QPointF val)

포인트 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(qreal) * 2>true 인 경우를 제외하고는 사용할 수 없습니다.

[noexcept(...)] QVariant::QVariant(QRect val)

rect 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(int) * 4>true 일 때를 제외하고는 사용되지 않습니다.

[noexcept(...)] QVariant::QVariant(QRectF val)

rect 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(qreal) * 4>true 일 때를 제외하고는 사용되지 않습니다.

[noexcept] QVariant::QVariant(QSize val)

크기 값이 val 인 새 변형을 생성합니다.

[noexcept(...)] QVariant::QVariant(QSizeF val)

크기 값이 val 인 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<sizeof(qreal) * 2>true 일 때를 제외하고는 사용되지 않습니다.

[noexcept] QVariant::QVariant(QTime val)

시간 값( val)을 가진 새 변형을 생성합니다.

[noexcept(...)] QVariant::QVariant(QUuid val)

uuid 값 val 으로 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<16>true 인 경우를 제외하고는 사용되지 않습니다.

[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)

해시가 QVariants, 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] QVariant::QVariant(const QList<QVariant> &val)

목록 값 val 으로 새 변형을 생성합니다.

[noexcept] QVariant::QVariant(const QLocale &l)

로캘 값 l 을 사용하여 새 변형을 생성합니다.

[noexcept] QVariant::QVariant(const QMap<QString, QVariant> &val)

QVariants, val 의 맵으로 새 변형을 구축합니다.

[noexcept(...)] QVariant::QVariant(const QModelIndex &val)

QModelIndex 값인 val 으로 새 변형을 생성합니다.

참고: 이 함수는 Private::FitsInInternalSize<8 + 2 * sizeof(quintptr)>true 인 경우를 제외하고는 사용되지 않습니다.

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 QVariant &p)

이 생성자에 인자로 전달된 p 변형의 복사본을 생성합니다.

[noexcept] QVariant::QVariant(QVariant &&other)

Move - 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 true

QObject 에서 파생된 유형에 대한 포인터를 포함하는 QVariantqobject_cast 에서 템플릿 유형 T 으로 변환이 성공할 경우 이 함수에 대해 참을 반환합니다. Q_OBJECT 매크로를 사용하는 QObject 서브클래스에 대해서만 작동한다는 점에 유의하세요.

convert()도 참조하세요 .

[since 6.0] bool QVariant::canConvert(QMetaType type) const

이형 상품의 유형을 요청된 유형으로 형 변환할 수 있는 경우 true 을 반환합니다( type). 이러한 형변환은 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)

lhsrhs 의 객체를 비교하여 순서를 지정합니다.

비교가 지원되지 않거나 값이 정렬되지 않은 경우 QPartialOrdering::Unordered 를 반환합니다. 그렇지 않으면 lhsrhs 보다 작거나 같거나 크면 각각 QPartialOrdering::Less, QPartialOrdering::Equivalent 또는 QPartialOrdering::Greater 을 반환합니다.

변형에 다른 메타타입을 가진 데이터가 포함된 경우, 값이 모두 숫자 또는 포인터 타입이 아닌 한 순서가 지정되지 않은 것으로 간주되며 일반 숫자 또는 포인터 비교 규칙이 사용됩니다.

참고: : 숫자 비교가 수행되고 하나 이상의 값이 NaN인 경우 QPartialOrdering::Unordered 이 반환됩니다.

두 변형에 모두 동일한 메타타입의 데이터가 포함되어 있으면 QMetaType::compare 메서드를 사용하여 두 변형의 순서를 결정하며, 이는 두 값 사이의 순서를 설정할 수 없음을 나타낼 수도 있습니다.

이 함수는 Qt 6.0에 도입되었습니다.

QMetaType::compare() 및 QMetaType::isOrdered()도 참조하세요 .

[since 6.0] bool QVariant::convert(QMetaType targetType)

이형 변형을 요청된 유형 targetType 으로 형변환합니다. 형변환을 수행할 수 없는 경우, 변형은 여전히 요청된 유형으로 변경되지만 QVariant(Type)에서 생성된 것과 유사한 지워진 널 상태로 남습니다.

변형의 현재 타입이 성공적으로 형 변환된 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

QObject 에서 파생된 타입에 대한 포인터를 포함하는 QVarianttargetType 에서 설명하는 타입에 대한 qobject_cast 이 성공하면 이 함수에 대해 참을 변환하여 반환합니다. 이는 Q_OBJECT 매크로를 사용하는 QObject 서브클래스에 대해서만 작동합니다.

참고: 초기화되지 않았거나 이전 변환에 실패하여 null인 QVariant를 변환하면 항상 실패하여 형이 변경되고 null로 남아 false 을 반환합니다.

이 함수는 Qt 6.0에 도입되었습니다.

canConvert() 및 clear()도 참조하십시오 .

void *QVariant::data()

포함된 객체에 대한 포인터를 쓸 수 있는 일반 공백*으로 반환합니다.

이 함수는 QVariant 을 분리합니다. null-QVariant 에서 호출하면 QVariant 은 호출 후 널이 되지 않습니다.

get_if() 및 QMetaType도 참조하세요 .

[since 6.6] template <typename T, typename... Args, QVariant::if_constructible<T, Args...> = true> T &QVariant::emplace(Args &&... args)

현재 *this 에 보유 중인 객체를 args... 에서 생성된 T 유형의 객체로 바꿉니다. *this 가 null이 아닌 경우, 이전에 보유하던 객체가 먼저 소멸됩니다. 가능하면, 이 메서드는 QVariant 에서 할당된 메모리를 재사용합니다. 새로 생성된 객체에 대한 참조를 반환합니다.

이 함수는 Qt 6.6에 도입되었습니다.

[since 6.6] template <typename T, typename U, typename... Args, QVariant::if_constructible<T, std::initializer_list<U> &, Args...> = true> 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 유형의 변형을 만들고 copynullptr 이 아닌 경우 *copy 의 복사본으로 초기화합니다(이 경우 copytype 유형의 객체를 가리켜야 합니다).

저장하려는 객체의 주소를 전달해야 한다는 점에 유의하세요.

일반적으로 이 생성자를 사용할 필요는 없으며 대신 QVariant::fromValue()를 사용하여 QMetaType::VoidStarQMetaType::QObjectStar 로 표시되는 포인터 유형에서 변형을 구성합니다.

type 이 복사 구성을 지원하지 않고 copynullptr 이 아닌 경우 변형은 유효하지 않습니다. 마찬가지로 copynullptr 이고 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, QVariant::if_rvalue<T> = true> QVariant QVariant::fromValue(T &&value)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.6에 도입되었습니다.

bool QVariant::isNull() const

null 변형인 경우 true, 그렇지 않으면 false를 반환합니다.

초기화된 값이나 널 포인터를 포함하지 않으면 변형은 널로 간주됩니다.

참고: 이 동작은 Qt 5에서 변경되었는데, 이형에 해당 객체에 대해 참을 반환하는 isNull() 메서드가 있는 내장형 객체가 포함된 경우에도 isNull()이 참을 반환했습니다.

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 을 이 QVariant 으로 이동합니다. 이는 value 을 이 QVariant 으로 이동하는 것과 같습니다.

value()도 참조하세요 .

template <typename T, typename = std::enable_if_t<!std::is_same_v<std::decay_t<T>, QVariant>>> void QVariant::setValue(T &&value)

value 의 복사본을 저장합니다. TQVariant 에서 지원하지 않는 유형인 경우 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)

QVariantvalue 을 복사합니다. 이는 단순히 valueQVariant 에 할당하는 것과 같습니다.

[noexcept] void QVariant::swap(QVariant &other)

이 변형을 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.

QBitArray QVariant::toBitArray() const

이형 상품에 userType() QMetaType::QBitArray 이 있는 경우 이형 상품을 QBitArray 으로 반환하고, 그렇지 않으면 빈 비트 배열을 반환합니다.

canConvert() 및 convert()도 참조하세요 .

bool QVariant::toBool() const

이형 상품에 userType() Bool이 있는 경우 이형 상품을 부울로 반환합니다.

이형 상품에 userType() QMetaType::Bool, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::UInt, QMetaType::ULongLong 이 있고 값이 0이 아닌 경우 또는 이형 상품에 QMetaType::QString 또는 QMetaType::QByteArray 유형이 있고 소문자 내용이 비어 있거나 "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 으로 반환하고, 그렇지 않으면 잘못된 날짜를 반환합니다.

type()이 QMetaType::QString 인 경우 문자열을 Qt::ISODate 형식의 날짜로 구문 분석할 수 없는 경우 잘못된 날짜가 반환됩니다.

canConvert() 및 convert()도 참조하세요 .

QDateTime QVariant::toDateTime() const

이형 상품에 userType() QMetaType::QDateTime, QMetaType::QDate, 또는 QMetaType::QString 이 있으면 QDateTime 으로 반환하고, 그렇지 않으면 잘못된 날짜/시간을 반환합니다.

type()이 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 가 있는 경우 이형 상품을 더블로 반환하고, 그렇지 않으면 0.0을 반환합니다.

ok 가 null이 아닌 경우: *ok 값이 더블로 변환될 수 있는 경우 참으로 설정되고, 그렇지 않으면 *ok 거짓으로 설정됩니다.

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 값이 더블로 변환될 수 있는 경우 참으로 설정되고, 그렇지 않으면 *ok 거짓으로 설정됩니다.

canConvert() 및 convert()도 참조하세요 .

QHash<QString, QVariant> QVariant::toHash() const

이형 상품에 type() QMetaType::QVariantHash 이 있는 경우 이형 상품을 QHash<QString, QVariant>로 반환하고, 그렇지 않으면 빈 맵을 반환합니다.

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 값이 정수로 변환될 수 있으면 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 가 있는 경우 긴 긴 int로 반환하고, 그렇지 않으면 0을 반환합니다.

ok 가 null이 아닌 경우: *ok 값이 정수로 변환될 수 있으면 true로 설정되고, 그렇지 않으면 *ok false로 설정됩니다.

canConvert() 및 convert()도 참조하세요 .

QMap<QString, QVariant> QVariant::toMap() const

이형 상품에 type() 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

이형 상품에 userType() QMetaType::Double, QMetaType::Float, QMetaType::Bool, QMetaType::QByteArray, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt, QMetaType::ULongLong 가 있는 경우 이형 상품을 qreal로 반환하고, 그렇지 않으면 0.0을 반환합니다.

ok 가 널이 아닌 경우: *ok 값이 더블로 변환될 수 있으면 참으로 설정되고, 그렇지 않으면 *ok 이 거짓으로 설정됩니다.

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() QMetaType::QSize 이 있는 경우 이형 상품을 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 으로 반환하고, 그렇지 않으면 잘못된 시간을 반환합니다.

type()이 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 가 있는 경우 이형 상품을 부호 없는 int로 반환하고, 그렇지 않으면 0을 반환합니다.

ok 가 null이 아닌 경우: *ok 값이 부호 없는 정수로 변환될 수 있으면 true로 설정되고, 그렇지 않으면 *ok false로 설정됩니다.

경고: 값이 QMetaType::ULongLong 로 변환할 수 있지만 너무 커서 부호 없는 int로 표현할 수 없는 경우 결과 산술 오버플로는 ok 에 반영되지 않습니다. 간단한 해결 방법은 QString::toUInt()를 사용하는 것입니다.

canConvert() 및 convert()도 참조하세요 .

qulonglong QVariant::toULongLong(bool *ok = nullptr) const

이형 상품에 type() QMetaType::ULongLong, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt 이 있는 경우 이형 상품을 부호 없는 긴 정수로 반환하고, 그렇지 않으면 0을 반환합니다.

ok 이 null이 아닌 경우: *ok 값이 정수로 변환될 수 있으면 true로 설정되고, 그렇지 않으면 *ok 이 false로 설정됩니다.

canConvert() 및 convert()도 참조하세요 .

QUrl QVariant::toUrl() const

이형 상품에 userType() QMetaType::QUrl 이 있는 경우 이형 상품을 QUrl 으로 반환하고, 그렇지 않은 경우 잘못된 QUrl 을 반환합니다.

canConvert() 및 convert()도 참조하세요 .

QUuid QVariant::toUuid() const

이형 상품에 type() QMetaType::QUuid, QMetaType::QByteArray 또는 QMetaType::QString 이 있는 경우 이형 상품을 QUuid 으로 반환하고, 그렇지 않으면 기본으로 구성된 QUuid 을 반환합니다.

canConvert() 및 convert()도 참조하세요 .

const char *QVariant::typeName() const

변형에 저장된 타입의 이름을 반환합니다. 반환되는 문자열은 데이터를 저장하는 데 사용된 C++ 데이터 유형을 설명합니다(예: "QFont", "QString" 또는 "QVariantList"). 유효하지 않은 변형은 0을 반환합니다.

template <typename T> T QVariant::value() const &

템플릿 유형으로 변환된 저장값을 반환합니다 T. canConvert ()를 호출하여 유형을 변환할 수 있는지 확인합니다. 값을 변환할 수 없는 경우 기본값으로 구성된 값이 반환됩니다.

T 유형이 QVariant 에서 지원되는 경우 이 함수는 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 empty

QVariantQObject 에서 파생된 유형에 대한 포인터가 포함된 경우 T 는 모든 QObject 유형일 수 있습니다. QVariant 에 저장된 포인터가 qobject_cast 에서 T 로 연결될 수 있으면 해당 결과가 반환됩니다. 그렇지 않으면 nullptr 이 반환됩니다. 이는 Q_OBJECT 매크로를 사용하는 QObject 서브클래스에 대해서만 작동합니다.

QVariant 에 순차 컨테이너가 포함되어 있고 TQVariantList 인 경우 컨테이너의 요소는 QVariant로 변환되어 QVariantList 로 반환됩니다.

QList<int> intList = {7, 11, 42};QVariant variant = QVariant::fromValue(intList);if (variant.canConvert<QVariantList>()) { QSequentialIterable iterable = variant.value<QSequentialIterable>() ; // foreach 사용 가능:foreach(const QVariant &v, 이터러블) {        qDebug() << v;
    } // C++11 사용 가능 범위-for: for(const QVariant &v: 이터러블) {        qDebug() << v;
    } // 이터레이터를 사용할 수 있습니다:    QSequentialIterable::const_iterator it = iterable.begin(); const QSequentialIterable::const_iterator end = 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 의 값을 이형 상품에 할당합니다.

관련 비회원

[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)

vT 형의 객체가 포함되어 있으면 포함된 객체에 대한 포인터를 반환하고, 그렇지 않으면 nullptr 를 반환합니다.

가변 v 을 취하는 오버로드는 v 을 분리합니다: 유형이 일치하는 null v 에서 호출될 때 T, v 은 호출 후 널이 되지 않습니다.

이 함수는 std::variant 와의 호환성을 위해 제공됩니다.

이 함수는 Qt 6.6에 도입되었습니다.

data()도 참조하십시오 .

[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)

vT 유형의 객체가 포함되어 있으면 포함된 객체에 대한 참조를 반환하고, 그렇지 않으면 호출에 정의되지 않은 동작이 있습니다.

가변 v 분리 v: 유형이 일치하는 null v 에서 호출될 때 T, v 은 호출 후 null이 되지 않습니다.

이 함수는 std::variant 와의 호환성을 위해 제공됩니다.

이 함수는 Qt 6.6에 도입되었습니다.

get_if() 및 data()도 참조하십시오 .

[alias] QVariantHash

QHash<QString, QVariant>의 동의어입니다.

[alias] QVariantList

QList<QVariant>의 동의어입니다.

[alias] QVariantMap

QMap<QString, QVariant>의 동의어입니다.

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)

lhsrhs 이 같으면 false 을 반환하고, 그렇지 않으면 true 을 반환합니다.

QVariant 는 포함된 type()의 같음 연산자를 사용하여 같음을 확인합니다.

서로 다른 유형의 변형은 몇 가지 예외를 제외하고는 항상 같지 않은 것으로 비교됩니다:

  • 두 타입이 모두 숫자 타입(정수 및 부동 소수점 숫자)인 경우, Qt는 표준 C++ 타입 승격 규칙을 사용하여 해당 타입을 비교합니다.
  • 한 유형이 숫자이고 다른 유형이 QString 인 경우, Qt는 QString 을 일치하는 숫자 유형으로 변환하려고 시도하고 성공하면 비교합니다.
  • 두 변형 모두 QObject 파생 유형에 대한 포인터를 포함하는 경우 QVariant 은 유형이 관련되어 있고 동일한 객체를 가리키는지 확인합니다.

QDataStream &operator<<(QDataStream &s, const QVariant &p)

s 스트림에 p 변형을 씁니다.

QDataStream 연산자 형식을참조하십시오 .

[noexcept] bool operator==(const QVariant &lhs, const QVariant &rhs)

lhsrhs 이 같으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

QVariant 는 포함된 type()의 같음 연산자를 사용하여 같음을 확인합니다.

서로 다른 유형의 변형은 몇 가지 예외를 제외하고는 항상 같지 않은 것으로 비교됩니다:

  • 두 타입이 모두 숫자 타입(정수 및 부동 소수점 숫자)인 경우, Qt는 표준 C++ 타입 승격 규칙을 사용하여 해당 타입을 비교합니다.
  • 한 유형이 숫자이고 다른 유형이 QString 인 경우, Qt는 QString 을 일치하는 숫자 유형으로 변환하려고 시도하고 성공하면 비교합니다.
  • 두 변형 모두 QObject 파생 유형에 대한 포인터를 포함하는 경우 QVariant 은 유형이 관련되어 있고 동일한 객체를 가리키는지 확인합니다.

이 함수의 결과는 QVariant::isNull 의 결과에 영향을 받지 않으므로 두 값 중 하나가 널이고 다른 하나는 그렇지 않더라도 두 값이 같을 수 있습니다.

QDataStream &operator>>(QDataStream &s, QVariant &p)

s 스트림에서 변형 p 을 읽습니다.

참고: 스트림에 기본 제공 유형이 아닌 유형이 포함된 경우( QMetaType::Type 참조) qRegisterMetaType() 또는 QMetaType::registerType()를 사용하여 해당 유형을 등록해야 변형이 제대로 로드될 수 있습니다. 등록되지 않은 유형이 발견되면 QVariant 에서 스트림에 손상 플래그를 설정하고 처리를 중지하고 경고를 인쇄합니다. 예를 들어 QList<int>의 경우 다음과 같이 출력됩니다:

QVariant::load: 이름을 알 수 없는 사용자 유형 QList<int>

QDataStream 연산자의 형식도참조하세요 .

© 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.