//for starf study#include "mainwindow.h"
#include "ui_mainwindow.h"#include<QDebug>
#include<QVariant>
#include<QJsonObject>//QVariant类就像最常见的Qt数据类型的并集。union { char c; int i;double d;QString ;QDate;..}data;
//union联合体中包含所有自带的基本类型
//QVariant类管理着这样一个uniontypedef struct MyCustomStructStruct{QString name;int age;
}MyCustomStruct;
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QVariant va = 42; //直接用一个已经存在的类对象来初始化QVariant对象QVariant var = QVariant(QVariant::BitArray); //构造类型的未初始化变量。这//将在特殊的空状态下创建一个变量,如果访问该变量,它将返回该类型的默认构造值。//参数QVariant::Type 包含了所有的基本数据类型,也就是QVariant支持的数据类型const QJsonObject json = QJsonObject();QVariant var2 = QVariant(&json);     //构造一个 json对象值val的新变量。//参数可以替换成其他类型对象qDebug()<<va.canConvert(QVariant::BitArray); // 判断对象是否能转换成参数里的类型var2.clear(); //将此变量转换为QMetaType::UnknownType类型,并释放所有使用的资源。qDebug()<<var2.convert(QVariant::Int); //将变量强制转换为指定类型,转换失败则保持原类型,返回truevar2.setValue(5); //变量会存储参数 包含类型和值MyCustomStruct s;//  QVariant var3 = QVariant::fromValue(s); //返回包含值副本的QVariant。否则,其行为与setValue()完全相同。//这种方法必须先注册新的自定义变量qDebug()<<var2.isNull(); //如果是空变量  返回trueqDebug()<<var2.isValid(); //如果此变量的存储类型不是QMetaType::UnknownType,则返回true;qDebug()<<QVariant::nameToType("int"); //将名称中给定的存储类型的字符串表示形式转换为其枚举表示形式。qDebug()<<var2.toBool(); //转换为bool类型qDebug()<<var2.toInt(); //转换为int类型//类似的  可以转换为所有系统支持的其他类型 当然可能转换失败qDebug()<<var2.type(); //返回当前变量的类型的枚举值qDebug()<<var2.typeName(); //返回当前变量的名称qDebug()<<QVariant::typeToName(QVariant::Double);//获得指定类型的名称qDebug() <<var2.userType(); //返回变量中存储的值的存储类型。对于非自定义类型,这与type()相同。int i = va.value<int>(); //T QVariant::value() const   返回转换为模板类型T的存储值 canConvert()以确定是否可以转换类型
}MainWindow::~MainWindow()
{delete ui;
}

QVariant方法功能(QT5.12)相关推荐

  1. 【Qt】Qt5.12版本编译Oracle驱动教程

    00. 目录 文章目录 00. 目录 01. Qt5.12安装 02. Qt安装注意事项 03. Qt版本和Oracle安装路径说明 04. Qt5.12编译Oracle驱动(使用MinGW 64位) ...

  2. Linux QT5.12 一种整体界面字体设置的方法及设置PlainTextEdit组件的字体大小方法

    1.在Linux QT5.12开发界面时,经常会涉及到界面字体大小的设置,默认字体一般比较小,解决方法如下: 在main函数中添加代码: //============================= ...

  3. QT5.12发布release版本方法

    QT5.12发布release版本方法 QT5.12发布release版本方法 生成relaese版本 发布release版本 将release版本整个打包成一个exe文件 QT5.12发布relea ...

  4. Firefly AIO-3399ProC开发板与PC端部署Qt5.12.2交叉编译环境

    文章目录 前言 一.Qt是什么? 二.开发部署环境 三.部署Qt5.12.2交叉编译环境 3.1 安装前的相关包下载及环境准备 3.2 在开发板端部署Qt5.12.2交叉编译环境 3.3 在PC端部署 ...

  5. vs 安装qtaddin_VS2017+Qt5.12环境搭建完美教程分享

    在学习一门新技术时,最令人头疼的莫过于布置环境了,应广大朋友的要求,小豆君在2019的第一篇文章中,就给大家分享下搭建VS2017+Qt5.12+Win10环境的详细步骤,以便你可以体验最新版Qt的强 ...

  6. ubuntu18.04 安装qt5.12.8及环境配置

    文章目录 一.下载安装包 二.安装 三.QT项目测试 环境 系统:ubuntu18.04 软件:qt5.12.8 一.下载安装包 下载地址http://download.qt.io/archive/q ...

  7. QT:(2)Window10、VS15下安装qt5.12.8

    双击下载的qt5.12.8安装包,一步步安装即可. 1.注册和安装(用自己的邮箱注册设置一下密码,之后会收到邮件按照邮件中的网址激活一下即可) 1.1完成之后,跳到下一个界面,同意一下开源软件的条款, ...

  8. 【Qt】在ubuntu14.04上安装Qt5.12(失败)

    注意 在ubuntu14.04上安装Qt5.12最终失败了,Qt5.12需要的libdbus库的版本和ubuntu14.04中的不一致,如果强行升级libdbus库版本,会导致系统桌面无法启动. 再次 ...

  9. C++ VS2017 QT5.12开发在xp环境下运行 [2019]亲测推荐

    项目是C++在vs2017+QT5.12写的,在win7,win8,win10运行无任何问题. (虽然XP已经被淘汰,但在中国至少还有6%的份额,尤其企业.研究所等.尝试此还是有意义的--) 但根据需 ...

最新文章

  1. 图片像素、英寸、厘米之间的单位换算
  2. java与fabric区块链--fabric-java-jdk部署搭建--(1)
  3. RandomUnderSampler 中的fit_resample 是 imblearn.base.py中调用output = self._fit_resample(X, y)
  4. python基础语法_字符串编码
  5. Android应用程序反编译
  6. matlab 贝叶斯网络学习
  7. 实验二 OpenGL的简单动画
  8. oracle 英文 简历,英文优秀个人简历模板范文
  9. 多目标水母搜索(MOJS)算法(Matlab实现)
  10. VGA、DVI、HDMI、DP 接口介绍及优劣
  11. 如何应对网站流量暴增
  12. LabVIEW程序框图保存为图像
  13. 如何用gmail绑定qq邮等
  14. java 百度地图_Java web实现百度地图导航
  15. Echarts隐藏YX轴、刻度、网格线和数据
  16. ad9850c语言编程,AD9850与单片机波形生成程序及设计
  17. python批量新建文件夹_Python3 批量创建文件夹
  18. 2023 年第八届数维杯数学建模挑战赛 A题详细思路
  19. Hoops编程指南:03_4_viewing_windows
  20. python网页设计模板_模板设计者文档

热门文章

  1. 入库管理系统示例代码
  2. ubantu22与windows相互复制粘贴(详细图文)
  3. table表格表头合并单元格问题
  4. 2018最新Python视频教程
  5. Ubuntu 卸载程序
  6. linux ps-e和-ax区别,Linux编程 6 (查看进程 ps 及输出风格)
  7. uni-app实战之社区交友APP(4)首页开发
  8. 【DNF/YUM】如何利用iso文件建立本地软件仓库
  9. 聚合查询越来越慢?——详解Elasticsearch的Global Ordinals与High Cardinality
  10. 网页制作(HTML)