zoukankan      html  css  js  c++  java
  • Qt Q_DECLARE_METATYPE说明——让自定义的类型设置到QVariant

    在使用Qt进行应用程序开发时,经常要自定义数据类型,而且在需要的时候还要把这些数据放到QVariant中去。因为QVariant是一个接受绝大部分类型的数据类型。为了达到这个目的,就必须使用Q_DECLARE_METATYPE。

    下面以一段简单的代码说明Q_DECLARE_METATYPE的用法和注意点。

    #include <QtGui/QApplication>
    #include <QVariant>
     
    struct struct1
    {
        int a;
        double b;
    };
     
    struct struct2
    {
        struct1 s;
        int c;
    };
     
    Q_DECLARE_METATYPE(struct1)  //struct1与struct2 谁先谁后,没有影响
    Q_DECLARE_METATYPE(struct2)
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        struct1 v1 = {1, 2.0};
        QVariant var1;
        var1.setValue(v1);
     
        if (var1.canConvert<struct1>())   //判断能否转化为相应类型
        {
            struct1 v11 = var1.value<struct1>();
        }
     
        struct2 v2 = {{2, 3.0}, 5};
        QVariant var2;
     
        if (var2.canConvert<struct2>())
        {
            var2.setValue(v2);
            struct2 v22 = var2.value<struct2>();
        }
     
        return a.exec();
    }

    通过Q_DECLARE_METATYPE声明后,就可以让自定义的类型设置到QVariant。

    (注:关于Q_DECLARE_METATYPE和Q_DECLARE_METATYPE相关,以后还会继续增加。。。)

    转自:http://www.cnblogs.com/braver/articles/1938774.html

  • 相关阅读:
    ubuntu下开发环境的搭建
    用移动存储设备安装Ubuntu全攻略
    LAMP服务器搭建
    PHP关闭提示、打印配置
    PHPmyadmin修改root密码
    转 sql2oracle
    SQL Server链接其他数据库服务器的方法(转)
    转(哈希查找)
    日语网址
    Reflector 右键注册
  • 原文地址:https://www.cnblogs.com/liushui-sky/p/5787733.html
Copyright © 2011-2022 走看看