이 페이지에서

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

공개 유형

(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 객체는 한 번에 하나의 값( typeId()의 결과)만을 저장합니다. (일부 유형은 다중 값을 가질 수 있습니다. 예를 들어, 문자열 목록이 있습니다.) 변형이 어떤 유형(T)을 가지고 있는지 확인할 수 있으며, ` convert()`를 사용하여 다른 유형으로 변환하고, `toT()` 함수 중 하나(예: ` toSize()`)를 사용하여 값을 가져올 수 있으며, ` canConvert()`를 사용하여 해당 유형이 특정 유형으로 변환 가능한지 확인할 수 있습니다.

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

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

QDataStream out("...");
QVariant v(123);                // 이제 variant에는 int가 포함됩니다
int x = v.toInt();              // x = 123
out << v;                       // out에 타입 태그와 int를 출력합니다
v = QVariant(tr("hello"));      // 이제 변수 v에는 QString이 들어 있습니다
int y = v.toInt();              // v는 int로 변환할 수 없으므로 y = 0
QString s = v.toString();       // s = tr("hello")  (QObject::tr() 참조)
out << v;                       // out에 타입 태그와 QString을 출력합니다
//...
QDataStream in("...");            // (앞서 열린 스트림을 다시 엽니다)
in >> v;                        // Int 변형을 읽습니다
int z = v.toInt();              // z = 123
qDebug("Type is %s",            // prints "Type is int"
        v.typeName());
v = v.toInt() + 100;            // 이제 variant는 223이라는 값을 갖게 됩니다
v = QVariant(QStringList());    // 이제 이 바리언트는 QStringList
를 포함합니다

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

QVariant는 또한 null 값의 개념도 지원합니다. 바리언트가 초기화된 값을 포함하지 않거나 null 포인터를 포함하는 경우, 해당 바리언트는 null로 간주됩니다.

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

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

GUI 유형에 대한 참고 사항

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

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

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

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

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)

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)

val 와 같은 long long 정수 값을 가진 새로운 변형을 생성합니다.

[noexcept] QVariant::QVariant(qulonglong val)

val 와 같은 부호 없는 long long 정수 값을 가진 새로운 변형을 생성합니다.

[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 값을 가진 새로운 변형을 생성합니다.

참고: Private::FitsInInternalSize<sizeof(int) * 4> 가 true 일 때,이 함수는 noexcept입니다.

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

val 값을 가진 새로운 변형을 생성합니다.

참고: 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)

val 와 같은 JSON 배열 값을 가진 새로운 변형을 생성합니다.

QVariant::QVariant(const QJsonDocument &val)

val 와 같은 JSON 문서 값을 가진 새로운 변형을 생성합니다.

[noexcept] QVariant::QVariant(const QJsonObject &val)

val 와 같은 JSON 객체 값을 가진 새로운 변형을 생성합니다.

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

val 형식의 JSON 값을 사용하여 새로운 변형을 생성합니다.

참고: 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 true

QObject 에서 파생된 타입에 대한 포인터를 포함하는 ` QVariant `도, 템플릿 타입 ` T `에 대한 ` qobject_cast `가 성공할 경우 이 함수에서 `true`를 반환합니다. 이는 ` 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)

lhs 및 rhs 에 있는 객체들을 비교하여 순서를 결정합니다.

비교가 지원되지 않거나 값의 순서가 정해져 있지 않은 경우 QPartialOrdering::Unordered 을 반환합니다. 그렇지 않은 경우, lhs 이 rhs 보다 작을 때는 QPartialOrdering::Less 을, 같을 때는 QPartialOrdering::Equivalent 을, 클 때는 QPartialOrdering::Greater 을 각각 반환합니다.

변수들이 서로 다른 메타타입의 데이터를 포함하는 경우, 두 변수가 모두 숫자형 또는 포인터형인 경우를 제외하고는 값들이 정렬되지 않은 것으로 간주되며, 이 경우 일반적인 숫자형 또는 포인터형 비교 규칙이 적용됩니다.

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

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

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

QMetaType::compare() 및 QMetaType::isOrdered()도 참조하십시오 .

const void *QVariant::constData() const

const void *QVariant::data() const

포함된 객체에 대한 포인터를 쓰기 불가능한 일반 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

이 변수가 null 변수인 경우 ` 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 를 this QVariant 위로 이동합니다. 이는 단순히 value 를 this 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 의 복사본을 저장합니다. 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 인 경우 해당 변수를 float 형식으로 반환하고, 그렇지 않은 경우 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이 아닌 경우: * 값을 int로 변환할 수 있으면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 가 포함되어 있는 경우, 해당 변형체를 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

변수의 값이 userType() QMetaType::Double, QMetaType::Float, QMetaType::Bool, QMetaType::QByteArray, QMetaType::Int, QMetaType::LongLong, QMetaType::QString, QMetaType::UInt 또는 QMetaType::ULongLong 인 경우, 해당 변수를 qreal로 반환합니다. 그렇지 않은 경우 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() 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

변형이 userType() QMetaType::QStringList, QMetaType::QString 또는 QMetaType::QVariantList 중 QString 로 변환 가능한 유형을 갖는 경우, 해당 변형을 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

변형체(variant)가 userType() QMetaType::UInt, QMetaType::Bool, QMetaType::QByteArray, QMetaType::QChar, QMetaType::Double, QMetaType::Int, QMetaType::LongLong, QMetaType::QString 또는 QMetaType::ULongLong 중 하나를 갖는 경우, 해당 변형체를 unsigned int 형식으로 반환하고, 그렇지 않은 경우 0을 반환합니다.

ok 가 null이 아닌 경우: * 값이 unsigned int로 변환될 수 있으면ok 가 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이 아닌 경우: * 값을 int로 변환할 수 있으면ok 가 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()도 참조하십시오 .

int QVariant::typeId() const

int QVariant::userType() const

variant에 저장된 값의 저장 유형을 반환합니다. 이는 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 empty

QVariant 에 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 범위 for 문 사용 가능:
    for (const QVariant&v: iterable) {
        qDebug() << v;
    }
    // 반복자를 사용할 수 있습니다:
    QMetaSequence::Iterable::const_iteratorit = iterable.begin();
    const QMetaSequence::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

QList 의 동의어 <QVariant>.

[alias] QVariantMap

QMap 의 동의어 <QString, QVariant>.

[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`을 분리합니다. 즉, ` null ` v 에 대해 일치하는 유형 ` T`을 사용하여 호출할 경우, 호출 후 ` v `은 `null`이 아닙니다.

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

이 함수들은 Qt 6.6에서 도입되었습니다.

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

[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 을 분리합니다. 즉, null v 에서 유형 T 와 일치하는 인수를 받아 호출될 경우, 호출 후 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이 아니더라도 두 값이 동일할 수 있습니다.

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.