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






















  • 相关阅读:
    连续子数组的最大和
    最小的K个数
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    Xcode5下去除Icon高光
    Unity3D-基本导航(NavMesh)功能实现
  • 原文地址:https://www.cnblogs.com/countryboy666/p/11037507.html
Copyright © 2020-2023  润新知