QVariant類類似于C++的聯(lián)合(union)數(shù)據(jù)類型,它不僅能保存很多Qt類型的值,包括QColor QBrush QFont QPen QRect QString 和 QSize等,也能存放Qt的容器類型的值。Qt的很多功能都是建立在QVariant基礎(chǔ)上的,如Qt的對象屬性以及數(shù)據(jù)庫功能等。 #include“widget.h”
#include <QDebug> #include <QVariant> #include <QColor>
Widget::Widget(QWidget *parent) :QWidget(parent) { QVariant v(709); /*聲明一個QVariant變量 v 并初始化為一個整數(shù)*/ qDebug()<<v.toInt(); // 調(diào)用QVariant::toInt()函數(shù) 將QVarint變量包含的內(nèi)容轉(zhuǎn)換為整數(shù)并輸出 QVariant w("How are you!"); //聲明一個QVariant變量w,并初始化為一個字符串。 qDebug()<<w.toString(); //調(diào)用QVariant::toString()函數(shù)將QVariant變量包含的內(nèi)容轉(zhuǎn)換為字符串輸出 QMap<QString,QVariant>map; //聲明一個QMap變量map,使用字符串作為鍵,QVariant變量作為值 map["int"]=709; //輸入整數(shù)型 map["double"]=709.709; //輸入浮點型 map["string"] ="How are you ! " // 輸入字符串 map["color"] =QColor(255,0,0); // 輸入QColor類型的值 qDebug()<<map["int"]<<map["int"].toInt(); //調(diào)試相應(yīng)的轉(zhuǎn)換函數(shù)并輸出 qDebug()<<map["double"]<<map["double"].toDouble(); qDebug()<<map["color"]<<map["color"].value<QColor>(); // 在QVarint變量中保存了一個QColor對象,并使用模板QVarint::value()還原為QColor,然后輸出。由于QVariant是QtCore模塊的類,所以它沒有為QtGui模塊中的數(shù)據(jù)類型(如QColor、QImage及QPixmap等)提供轉(zhuǎn)換函數(shù),因此需要使用QVarint::value()函數(shù)或者QVarintValue()模塊函數(shù)。 ... QStringList s1; //創(chuàng)建一個字符串列表 s1<<"A"<<"B"<<"C"<<"D"; QVariant slv(s1); //將該列表保存在一個QVariant變量中
//QVariant::type()函數(shù)返回存儲在QVariant變量中的值的數(shù)據(jù)類型。QVariant::StringList是Qt定義的一個QVariant::type枚舉類型的變量 if(slv.type()==QVariant::StringList) { QStringList list=slv.toStringList(); for(int i=0;i<list.size();++i) qDebug()<<list.at(i);
} } Widget::~Widget() { }
輸出結(jié)果: 709 “How are you!” QVariant(int,709) 709 QVariant(double,709.709) 709.709 QVariant(QString,"How are you!") "How are you!" QVariant(QColor,QColor(ARGB 1,1,0,1)) QColor(ARGB 1,1,0,0) "A" "B" "C" "D"
|