QVariant class学习

6 篇文章 1 订阅
5 篇文章 0 订阅

QVariant类就像最常见的Qt数据类型的联合一样

Hearder #include "QVariant"

qmake QT+= core

Public Functions

 

 

QVariant()

 

QVariant(Type type)

 

QVariant(const QRegularExpression &re)

 

QVariant(const QUrl &val)

 

QVariant(const QEasingCurve &val)

 

QVariant(const QUuid &val)

 

QVariant(const QModelIndex &val)

 

QVariant(const QPersistentModelIndex &val)

 

QVariant(const QJsonValue &val)

 

QVariant(const QJsonObject &val)

 

QVariant(const QJsonArray &val)

 

QVariant(const QJsonDocument &val)

 

QVariant(QVariant &&other)

 

QVariant(int typeId, const void *copy)

 

QVariant(const QVariant &p)

 

QVariant(QDataStream &s)

 

QVariant(int val)

 

QVariant(uint val)

 

QVariant(qlonglong val)

 

QVariant(qulonglong val)

 

QVariant(bool val)

 

QVariant(double val)

 

QVariant(float val)

 

QVariant(const char *val)

 

QVariant(const QByteArray &val)

 

QVariant(const QBitArray &val)

 

QVariant(const QString &val)

 

QVariant(QLatin1String val)

 

QVariant(const QStringList &val)

 

QVariant(QChar c)

 

QVariant(const QDate &val)

 

QVariant(const QTime &val)

 

QVariant(const QDateTime &val)

 

QVariant(const QList<QVariant> &val)

 

QVariant(const QMap<QString, QVariant> &val)

 

QVariant(const QHash<QString, QVariant> &val)

 

QVariant(const QSize &val)

 

QVariant(const QSizeF &val)

 

QVariant(const QPoint &val)

 

QVariant(const QPointF &val)

 

QVariant(const QLine &val)

 

QVariant(const QLineF &val)

 

QVariant(const QRect &val)

 

QVariant(const QRectF &val)

 

QVariant(const QLocale &l)

 

QVariant(const QRegExp &regExp)

 

~QVariant()

bool

canConvert(int targetTypeId) const

bool

canConvert() const

void

clear()

bool

convert(int targetTypeId)

bool

isNull() const

bool

isValid() const

void

setValue(const T &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 = Q_NULLPTR) const

QEasingCurve

toEasingCurve() const

float

toFloat(bool *ok = Q_NULLPTR) const

QHash<QString, QVariant>

toHash() const

int

toInt(bool *ok = Q_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 = Q_NULLPTR) const

QMap<QString, QVariant>

toMap() const

QModelIndex

toModelIndex() const

QPersistentModelIndex

toPersistentModelIndex() const

QPoint

toPoint() const

QPointF

toPointF() const

qreal

toReal(bool *ok = Q_NULLPTR) const

QRect

toRect() const

QRectF

toRectF() const

QRegExp

toRegExp() const

QRegularExpression

toRegularExpression() const

QSize

toSize() const

QSizeF

toSizeF() const

QString

toString() const

QStringList

toStringList() const

QTime

toTime() const

uint

toUInt(bool *ok = Q_NULLPTR) const

qulonglong

toULongLong(bool *ok = Q_NULLPTR) const

QUrl

toUrl() const

QUuid

toUuid() const

Type

type() const

const char *

typeName() const

int

userType() const

T

value() const

bool

operator!=(const QVariant &v) const

bool

operator<(const QVariant &v) const

bool

operator<=(const QVariant &v) const

QVariant &

operator=(const QVariant &variant)

QVariant &

operator=(QVariant &&other)

bool

operator==(const QVariant &v) const

bool

operator>(const QVariant &v) const

bool

operator>=(const QVariant &v) const

Static Public Members

 

QVariant

fromValue(const T &value)

Type

nameToType(const char *name)

const char *

typeToName(int typeId)

Related Non-Members

 

typedef

QVariantHash

typedef

QVariantList

typedef

QVariantMap

T

qvariant_cast(const QVariant &value)

bool

operator!=(const QVariant &v1, const QVariant &v2)

bool

operator==(const QVariant &v1, const QVariant &v2)

c++有一个可能被大家忽略的知识,就是如果一个类,使用的不是默认构造函数,是不能放到union里面去的,找了一个链接https://www.cnblogs.com/jeakeven/p/5113508.html

也因此,QT里面有许多类不能在union里面用

一个QVariant对象一次只能保存单个类型的单个值,可以用convert()去转换成其它类型,canConvert()查看是否能转换,而可以同过toT()类型的函数去获取T类型的值

我们可以ATL QList<QVariant>和QMap(QString,QVariant),所以我们可以很轻松的构造一些复杂的变量类型。

需要注意的是QVariant自己就在QtCore里面,所以无法为Core里面的类提供转换,比如QColor、QImage和QPixmap,换句话说,就是没有toColor()这类函数。

但是我们可以使用QVariant::value()或者qvariant_cast()这种模板函数。比如:

QVariant variant;

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

而你变换则是自动的,相当于隐式转换

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

QVariant variant = color;

有时候会出现一种情况就是canConvert() 返回true,但是Convert()返回false,这是因为,canConvert只是检查两种类型是否能转换,但是你赋的值可能不允许转换

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值