#include <QApplication>
#include <QDebug>
#include <QPaintEvent>
//The QVariant class acts like a union for the most common Qt data types.。
//Q_DECLARE_METATYPE(class or struct)
struct Myclass
{
int id;
QString name;
};
//QVariant 可以保存很多Qt的数据类型,包括QBrush、QColor、QCursor、QDateTime、QFont、QKeySequence、 QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,并且还有C++基本类型,如 int、float等。
//QVariant也可以支持自定义的数据类型 使用Q_DECLARE_METATYPE()宏
Q_DECLARE_METATYPE(Myclass)
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// var is object
QVariant var;
var.setValue(12);
int da = var.toInt();
qDebug()<<da;
var = 19;
QString dae=var.toString();
qDebug()<<dae;
qDebug()<<(int)(var.;
//can conserve different types
QVector<QVariant> data(3);
Myclass myclass;
myclass.id = 0;
myclass.name = QString("Liming");
data[0] = QString("dd");
data[1] = 123;
data[2] = QVariant::fromValue(myclass);
QString str = data.value(0).toString();
qDebug()<<str;
int val= data.value(1).toInt();
qDebug()<<val;
//model function
if(data[2].canConvert<Myclass>())
{
Myclass myclass = data[2].value<Myclass>();
int id = myclass.id;
QString name = myclass.name;
qDebug()<<id<<name;
}
//conserve variable
//QVariant var_p = QVariant::fromValue((void*)event);
//get
// QPaintEvent* e=(QPaintEvent*)var_p.value<void*>();
return a.exec();
}