QT开发应用程序(5)-- QVariant类

QVariant类似于C语言的union和类似于MFC的_variant_t
。使用一系列的to函数取出来。

QVariant可以保存很多Qt的数据类型,包括QBrush、QColor、QCursor、QDateTime、QFont、QKeySequence、QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,并且还有C++基本类型,如int、float等。QVariant还能保存很多集合类型,如QMap<QString, QVariant>, QStringList和QList。item view classes,数据库模块和QSettings都大量使用了QVariant类,以方便存取。

(1)构造

#include <QVariant>
QVariant v(1);
QVariant v1;
v1.setValue("boy");

(2)取值

if (v.canConvert<int>())
{
    bool ok;
    int i = v.toInt(&ok); 
    //int i = v.value<int>(); 
}

(3)自定义存储QVariant类型

struct VarClass
{
    QString name;
    int nValue;
    int nHeight;
}
Q_DECLARE_METATYPE(VarClass)

VarClass vClass;
QVariant v3 = QVairant::fromValue(vClass);
//
QVariant v2;
v2.canConvert<VarClass >();
VarClass myClass2 = v2.value<VarClass>();

(3)存放Meta-Object数

QIcon icon("sample.png");   
QVariant var = icon;   
QIcon icon1 = var.value<QIcon>();

(4)存入其它类型的数据

QMap<QString, QVariant> map;
map["int"] = 1;
map["float"] = 2.9;
map["string"] = "2.923";
map["color"] = QColor(255,0,0);
qDebug()<<map["int"].toInt();
qDebug()<<map["float"].toFloat();
qDebug()<<map["string"].toString();
qDebug()<<map["color"].value<QColor>();
QStringList strList;
strList<<"1"<<"1"<<"1"<<"1";
QVariant var(strList);
if(var.type() == QVariant()::StringList)
{
	QStringList strList1 = var.toStringList() ;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt5是一种跨平台的C++图形用户界面(GUI)应用程序开发框架,提供了大量的和模块,用于实现各种功能。其库使用的是面向对象的设计和编程思想,通过继承和多态性的特性来实现的组织和扩展。 Qt5的继承关系图非常庞大,很难在300字的篇幅内详细说明每个的继承关系。然而,我们可以简单介绍一些核心模块的继承关系。 首先,Qt Widgets模块提供了各种GUI相关的。一些重要的包括QWidget,QMainWindow和QPushButton。QWidget是所有窗口部件的基。QMainWindow是主窗口的基,其中包含了菜单栏、工具栏和状态栏等部件。QPushButton则是一个按钮部件。 其次,Qt Core模块是Qt5中最基础的模块,提供了一些基本的和功能。QObject是所有QObject的基,它是一个可扩展的基,提供了一些有用的特性,如对象树的机制和信号与槽的机制。QVariant可以存储和操纵各种不同型的数据。 此外,Qt Network模块提供了用于网络编程的,如QTcpSocket和QHostAddress。Qt Sql模块提供了用于数据库访问和管理的,如QSqlDatabase和QSqlQuery。 还有一些模块,如Qt Multimedia、Qt OpenGL和Qt WebEngine等,分别提供了多媒体、OpenGL和Web引擎相关的。 总之,Qt5的继承关系图非常庞大且复杂,上述只是介绍了一些核心模块的。想要深入了解Qt的全部,请查阅Qt的官方文档或相关的学习资料。 ### 回答2: Qt5是一个跨平台的C++应用程序框架,提供了丰富的库和工具箱用于开发图形用户界面和网络应用程序Qt5库中的非常多,涉及的领域也非常广泛,因此很难在300个字中详细描述所有的继承关系图。在这里,我将简要介绍一些主要的和它们的继承关系。 首先,Qt5的核心称为QObject,它是所有可在QObject树中添加的对象的基。大多数Qt都直接或间接继承自QObject,这使得Qt具备了强大的事件处理、对象生命周期管理和信号槽机制。 在图形用户界面方面,QObject的直接子包括QWidget和QQuickItem。QWidget是所有窗口控件(如窗口、按钮、标签等)的基,而QQuickItem是在Qt Quick中使用的基。这些内部又有很多派生,用于实现不同型的控件和界面元素,如QLabel、QPushButton、QLineEdit等。 在网络方面,Qt5提供了丰富的网络,如QTcpSocket、QUdpSocket、QHostInfo等。这些用于实现网络通信和协议处理。同时,Qt5还提供了跨平台的网络模块QtNetwork,方便开发者进行网络编程。 除了图形界面和网络,Qt5还提供了其他库用于数据库访问、XML处理、多媒体处理、图像处理等。例如,QtSql模块提供了用于数据库访问的,如QSqlDatabase、QSqlQuery等;QtXml模块提供了用于XML文件处理的,如QDomDocument、QDomElement等。 总结起来,Qt5的继承关系非常复杂,涵盖了图形界面、网络通信、数据库访问、多媒体处理等领域。上述介绍只是其中的一部分,希望能够对Qt5的继承关系有一个初步的了解。如需详细了解,请参考Qt5官方文档或相关书籍。 ### 回答3: Qt5是一个跨平台的应用程序框架,提供了丰富的库和工具,用于开发图形界面和跨平台应用程序Qt5库中包含了众多的,这些之间存在多种继承关系。 Qt5的继承关系图非常庞大,无法在300字内详尽列举和描述所有的继承关系。不过,我们可以大致介绍一下Qt5中的一些基本和它们的继承关系。 QObject是Qt中所有对象的基,它实现了信号槽的机制和对象树的管理。其他大部分都是QObject的子或间接子。 QWidget是Qt中的窗口小部件的基,它实现了所有窗口的基本功能。QMainWindow是QWidget的子,用于创建主窗口。除QWidget和QMainWindow外,Qt5还提供了许多其他的小部件,如QLineEdit、QLabel、QPushButton等。 QLayout和其子用于管理小部件的布局,包括QHBoxLayout、QVBoxLayout、QGridLayout等。 Qt还提供了一些跟图形相关的,例如QPainter、QPixmap、QImage等。QPainter用于在小部件上绘制图形,QPixmap用于存储和操作图像,QImage用于处理图像的像素数据。 此外,Qt还提供了许多其他,如QFile、QDataStream等用于文件操作,QNetworkAccessManager、QNetworkRequest等用于网络操作,以及许多用于处理数据、进行线程操作等的。 总的来说,Qt5的继承关系图十分复杂,涵盖了各个领域的功能。在实际开发中,我们可以通过查看Qt官方文档来获得详细的继承关系和功能描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值