using of Qvariant

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






















posted @ 2019-06-16 23:52  countryboy666  阅读(89)  评论(0编辑  收藏  举报