QVariant类

2023-11-17

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();
}

三级目录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QVariant类 的相关文章

随机推荐