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类的主要内容,如果未能解决你的问题,请参考以下文章
QVariant::QVariant(void*) 是私有的