QVariant类

Posted Respect@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QVariant类相关的知识,希望对你有一定的参考价值。

QVariant类

QVariant类是Qt的共用体union数据类型,不仅能保存很多Qt类型的值,包括QColor,QBrush,QFont,QRect,QString及QSize等等,而且能存放Qt的容器类型值。
可采用toT()将QVariant对象转换称为T类型并获取其值。如toInt(),toFloat(),toString(),可用type方法获取数据类型,判断数据是否可。对于GUI模块中定义的数据类型没有相应的转换函数,即没有toColor(),没有toImage()这样的函数提供,可通过value()方法实现转换,判断两种类型是否可以转换时可通过canConvert()方法的返回值判断。

demo

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = 0);
    ~Widget();
};

#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include <QDebug>
#include <QTimer>
#include <QApplication>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    QVariant vNum(100);
    qDebug() << vNum.toInt();

    QVariant vPI(3.1415f);
    qDebug() << vPI.toFloat();

    QVariant vStr("Hello!");
    qDebug() << vStr.toString();

    QVariant vb(true);
    qDebug() << vb.toBool();

    QColor c = QColor(Qt::red);
    QVariant vC = c;
    qDebug() << vC.type();
    qDebug() << vC.value<QColor>();

    QVariant vss = vStr;

    //返回数据类型转换的能力
    qDebug() << vss.canConvert(QVariant::Int);
    qDebug() << vss.toString();

    //转换成功的条件:有转换能力,数据类型匹配
    qDebug() << vss.convert(QVariant::Int);
    qDebug() << vss.toString();

    //退出应用程序
    QTimer::singleShot(0,qApp,SLOT(quit()));
}

Widget::~Widget()
{

}

main.cpp

#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
//    w.show();

    return a.exec();
}

三级目录

以上是关于QVariant类的主要内容,如果未能解决你的问题,请参考以下文章

转载:QByteArray和QVariant

QVariant::QVariant(void*) 是私有的

QVariant 反序列化给出无效值

qt : QSqlQuery 返回 QVariant 的向量

QVariant 调用存储对象的函数,定义在项目的主要部分

QVariant实质