QString提供了Unicode編碼的字符串,使用隱式共享技術來節省內存和沒必要要的數據拷貝,沒必要考慮跨平臺的兼容性。html
QString類成員函數中除了 ascii()、latin1()、utf8()、local8Bit()函數,其餘全部的函數都是可重入的。數據庫
QString::QString ( const QChar * unicode )數組
QString::QString ( const QString & other )安全
QString::QString ( const char * str )數據結構
QString::QString ( const QByteArray & ba )app
構造函數ide
QString & QString::append ( const QString & str )函數
QString & QString::append ( const QByteArray & ba )編碼
QString & QString::append ( const char * str )spa
QString & QString::append ( QChar ch )
在字符串尾部插入字符ch
QString QString::arg ( const QString & a1, const QString & a2, const QString & a3, const QString & a4 ) const
const QChar QString::at ( int position ) const
返回字符串中位置pos的字符
iterator QString::begin ()
const_iterator QString::begin () const
返回指向字符串的第一個字符的迭代器
int QString::capacity () const
返回字符串能存儲的最大字節數
void QString::chop ( int n )
刪除字符串尾部開始的n個字節
void QString::clear ()
清除字符串內容並置空
int QString::compare ( const QString & s1, const QString & s2, Qt::CaseSensitivity cs ) [static]
int QString::compare ( const QString & s1, const QString & s2 ) [static]
字符串比較
const QChar * QString::constData () const
返回指向字符串所存儲數據的指針
bool QString::contains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
bool QString::contains ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
字符ch是否包含在字符串中
int QString::count ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
int QString::count ( QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
字符ch在字符串中出現的次數
int QString::count () const
字符串中的字節數
QChar * QString::data ()
const QChar * QString::data () const
返回指向字符串所存儲數據的指針
iterator QString::end ()
const_iterator QString::end () const
返回指向字符串最後一個字符的下一個位置的迭代器
bool QString::endsWith ( const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
若是字符串以字符串s結尾,返回true
QString & QString::fill ( QChar ch, int size = -1 )
設置字符串中的每一個字符用ch填充
QString QString::fromAscii ( const char * str, int size = -1 ) [static]
返回一個使用字符串str的前size字節初始化的字符串
QString QString::fromLocal8Bit ( const char * str, int size = -1 ) [static]
返回一個使用8位編碼字符串str的前size字節初始化的字符串
QString QString::fromRawData ( const QChar * unicode, int size ) [static]
返回使用數組unicode的前size個Unicode字節構造的字符串
QString QString::fromStdString ( const std::string & str ) [static]
返回字符串str的副本
QString QString::fromUtf8 ( const char * str, int size = -1 ) [static]
返回UTF-8編字符串str的前size字節初始化的字符串
QString QString::fromUtf16 ( const ushort * unicode, int size = -1 ) [static]
QString & QString::insert ( int position, const QString & str )
在字符串的位置pos插入字符串str
QString QString::left ( int n ) const
返回字符串中最左邊n個字符的字符串
字符串操做
Qt組合字符串的另外一個函數楇 QString::sprintf(),此函數支持的格式定義符和C++庫中的函數sprintf定義的同樣。Qt還提供了另一種方便的字符串組合方 式,使用QString::arg()函數,此函數的重載能夠處理多種數據類型,一些重載具備額外的參數對字段的寬度、數字基數或者浮點數精度進行控制。 相對於sprintf來講,srg是一個比較好的解決方案,由於它類型安全,徹底支持Unicode,而且容許改變"%n"參數的順序。
QString str;
str=QString("%1 was born in %2 .").arg("Rimond").arg(1990);
//str="Rimond was born in 1990"
字符串轉換
QString類提供了豐富的轉換函數,能夠實現講一個字符串轉換爲數值類型或者其餘的字符編碼集。
QString::toInt()函數實現了將字符串轉換爲整型數值,相似的函數還有toDouble()、toFloat()、toLong()、toLongLong()等。
QString提供的字符串編碼集的轉換函數將會返回一個const char*類型版本的QByteArry,即構造函數QByteArry(const char*)構造的QByteArry對象。QByteArry類具備一個字符數組,它既能夠存儲原始字節(raw bytes),也能夠存儲傳統的以「\0」結尾的8位的字符串。在Qt中,使用QByteArry比使用const char*更爲方便,且QByteArry也支持隱式共享,轉換函數有如下幾種。
toAscii()返回一個ASCII編碼的8位字符串
toLatin1()返回一個Latin-1編碼的8位字符串
toUtf8()返回一個utf-8編碼的8位字符串
toLocal8Bit()返回一個系統本地編碼的8位字符串
QT默認使用Unicode編碼,不能顯示中文,而操做系統默認通常爲本地的編碼,如GB2312,所以須要修改QT中的編碼方式顯示中文。
QTextCodec提供了不一樣編碼文本之間的轉換。
QT使用Unicode編碼存儲、繪製、操做字符串。不少狀況下,須要使用不一樣的編碼方式處理字符串。QT提供了一套QTextCodec類用於在Unicode和非Unicode編碼間轉換。
使用不一樣編碼方式讀寫文件時,可使用QTextStream及其setCodec()函數。
QTextCodec * QTextCodec::codecForCStrings () [static]
返回QString與 const char *和QByteArray的相互轉換的編碼方式的指針
QTextCodec * QTextCodec::codecForLocale () [static]
返回指向最適合本地的編碼方式的指針
QTextCodec * QTextCodec::codecForName ( const QByteArray & name ) [static]
QTextCodec * QTextCodec::codecForName ( const char * name ) [static]
搜索全部安裝的編碼方式,返回與name最匹配的編碼方式
QString QTextCodec::toUnicode ( const char * chars ) const
QString QTextCodec::toUnicode ( const char * input, int size, ConverterState * state = 0 ) const
QString QTextCodec::toUnicode ( const QByteArray & a ) const
返回使用Unicode編碼後的字符串
Unicode編碼字符串轉化爲本地編碼字符串
QString string = "...";
QTextCodec *codec = QTextCodec::codecForName("KOI8-R");
QByteArray encodedString = codec->fromUnicode(string);
QByteArray提供一個字節數組,能夠像C++數組同樣使用。
QByteArray用於存儲原始字節數據(包括’\0’)和經典的8位編碼的字符串數據(‘\0’結束),使用QByteArray比const char *更方便。背後緣由實際上是,QByteArray總會確保數據以‘\0’結束,而且使用隱式共享技術減小內存開銷和沒必要要的數據拷貝。
QByteArray自動的保證最後一個字節以後的那位的值是「\0」,致使QByteArray能夠容易的轉變爲const char*,一樣做爲存儲二進制的數據類型,QByteArray中間也能夠存儲「\0」。
QByteArray::QByteArray ()
QByteArray::QByteArray ( const char * str )
QByteArray::QByteArray ( const char * data, int size )
QByteArray::QByteArray ( int size, char ch )
QByteArray::QByteArray ( const QByteArray & other )
構造函數
QByteArray & QByteArray::append ( const QByteArray & ba )
在字節數組尾部追加字節數組ba
QByteArray & QByteArray::append ( const QString & str )
QByteArray & QByteArray::append ( const char * str )
在字節數組尾部追加字符串str
QByteArray & QByteArray::append ( const char * str, int len )
在字節數組尾部追加字符串str中的前len個字節
QByteArray & QByteArray::append ( char ch )
在字節數組尾部追加字符ch
char QByteArray::at ( int i ) const
返會字節數組中的第i個字節
int QByteArray::capacity () const
返回字節數組可以存儲的最大字節數
void QByteArray::chop ( int n )
從字節數組尾部開始向前刪除n字節
void QByteArray::clear ()
清除字節數組的內容並置空
const char * QByteArray::constData () const
返回指向字節數組所存儲數據的指針
bool QByteArray::contains ( const QByteArray & ba ) const
若是字節數組中包含字節數組ba,返回true
bool QByteArray::contains ( const char * str ) const
若是字符數組中包含字符串str,返回true
bool QByteArray::contains ( char ch ) const
若是字節數組中包含字符ch,返回true
int QByteArray::count ( const QByteArray & ba ) const
返回字節數組中字節數組ba出現的次數
int QByteArray::count ( const char * str ) const
返回字節數組中字符串str出現的次數
int QByteArray::count ( char ch ) const
返回字節數組中字符ch出現的次數
int QByteArray::count () const
返回字節數組中的字節數
char * QByteArray::data ()
const char * QByteArray::data () const
返回指向字節數組中的數據的指針
bool QByteArray::endsWith ( const QByteArray & ba ) const
bool QByteArray::endsWith ( const char * str ) const
bool QByteArray::endsWith ( char ch ) const
字節數組是否以字符結尾
QByteArray & QByteArray::fill ( char ch, int size = -1 )
使用字符ch填充字節數組內容
QByteArray QByteArray::fromBase64 ( const QByteArray & base64 ) [static]
返回Base64數組base64解碼後的副本
QByteArray QByteArray::fromHex ( const QByteArray & hexEncoded ) [static]
返回hex編碼數組hexEncoded解碼後的副本
QByteArray QByteArray::fromRawData ( const char * data, int size ) [static]
使用數組data的前size字節構造一個字節數組
QByteArray & QByteArray::insert ( int i, const QByteArray & ba )
在字節數組的位置i插入字節數組ba
QByteArray & QByteArray::insert ( int i, const QString & str )
QByteArray & QByteArray::insert ( int i, const char * str )
QByteArray & QByteArray::insert ( int i, const char * str, int len )
QByteArray & QByteArray::insert ( int i, char ch )
在字節數組的位置i插入字符ch
QByteArray QByteArray::left ( int len ) const
返回字節數組的最左邊的len個字節的字節數組
QByteArray QByteArray::leftJustified ( int width, char fill = ' ', bool truncate = false ) const
返回包含本字節數組的大小爲width的字節數組,使用字符fill填充
int QByteArray::length () const
返回字節數組的大小
QByteArray & QByteArray::prepend ( const QByteArray & ba )
QByteArray & QByteArray::prepend ( const char * str )
QByteArray & QByteArray::prepend ( const char * str, int len )
QByteArray & QByteArray::prepend ( char ch )
在字節數組的開始前插字符ch
QByteArray & QByteArray::remove ( int pos, int len )
在字節數組的位置pos開始刪除len字節
QByteArray & QByteArray::replace ( int pos, int len, const QByteArray & after )
QByteArray & QByteArray::replace ( int pos, int len, const char * after )
QByteArray & QByteArray::replace ( int pos, int len, const char * after, int alen )
QByteArray & QByteArray::replace ( const QByteArray & before, const QByteArray & after )
QByteArray & QByteArray::replace ( const char * before, const QByteArray & after )
QByteArray & QByteArray::replace ( const char * before, int bsize, const char * after, int asize )
QByteArray & QByteArray::replace ( const QByteArray & before, const char * after )
QByteArray & QByteArray::replace ( const QString & before, const QByteArray & after )
QByteArray & QByteArray::replace ( const QString & before, const char * after )
QByteArray & QByteArray::replace ( const char * before, const char * after )
QByteArray & QByteArray::replace ( char before, const QByteArray & after )
QByteArray & QByteArray::replace ( char before, const QString & after )
QByteArray & QByteArray::replace ( char before, const char * after )
QByteArray & QByteArray::replace ( char before, char after )
QByteArray QByteArray::toBase64 () const
返回字節數組數據的BASE64編碼後的字節數組
double QByteArray::toDouble ( bool * ok = 0 ) const
返回字節數組轉換爲的double值
QByteArray ba;
ba.resize(5);
ba[0] = 0x3c;
ba[1] = 0xb8;
ba[2] = 0x64;
ba[3] = 0x18;
ba[4] = 0xca;
QByteArray x("and");
x.prepend("rock "); // x == "rock and"
x.append(" roll"); // x == "rock and roll"
x.replace(5, 3, "&"); // x == "rock & roll"
QVariant是一種能夠存儲不一樣類型的數據結構,至關於QT中大多數數據類型的共用體。
因爲C++禁止使用含有非默認構造函數和析構函數的類型的共用體,大多數QT類並不使用共用體。若是沒有QVariant,對於QObject對象屬性和數據庫的工做多是個問題。
QVariant對象每次只能存儲一種數據類型,QVariant對象存儲的數據的放入和取出必須是相對應的,存入過程會調用QVariant對於相應數據類型的構造函數,取出數據時一樣須要調用QVariant對於相應數據類型的成員函數。
QVariant對象是否能夠轉換到指定的數據類型能夠調用canConvert(type)成員函數。QVariant對象轉換爲存儲類型的類型轉換函數一般命名爲toT()。
QVariant對象能夠存儲不少QT的數據類型,包括QBrush、QColor、QCursor、QDataTime、QFont、 QKeySequence、QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,以及基本類型:int、float等。Qvariant還能夠存儲不少集合類型,如QMap<QString,QVariant>、QStringList和 QList<QVariant>。其中item view classes、數據庫模塊和QSettings都大量使用了QVariant類,方便讀寫數據。
全局函數
bool qVariantCanConvert ( const QVariant & value )
若是給定的value能轉換爲指定的模板類型type,返回true
QVariant qVariantFromValue ( const T & value )
將給定模板類型T的value轉換爲QVariant
void qVariantSetValue ( QVariant & variant, const T & value )
將variant設置爲給定模板類型T的value副本
T qVariantValue ( const QVariant & value )
模板函數,將value轉換爲模板類型T的對象
T qvariant_cast ( const QVariant & value )
將value轉換爲模板類型T的對象
成員函數
T QVariant::value () const
模板函數,返回存儲的類型T的值
int QVariant::userType () const
返回存儲在QVariant中的數據的類型
const char * QVariant::typeName () const
返回存儲在QVariant中的數據類型的名字
Type QVariant::type () const
返回存儲在QVariant中的數據的存儲類型
void QVariant::setValue ( const T & value )
將value的副本存儲到QVariant對象
void QVariant::clear ()
將QVariant轉換爲無效類型,釋放使用資源
bool QVariant::convert ( Type t )
強制轉換QVariant對象爲類型t
QVariant QVariant::fromValue ( const T & value ) [static]
將類型T的value的副本轉換爲QVariant
bool QVariant::canConvert ( Type t ) const
模板函數,若是QVariant能被強制轉換爲t類型,返回true
自定義QVariant存儲的數據類型必須有一個默認的構造函數和一個拷貝構造函數,同時必須使用Q_DECLARE_METATYPE()宏,放在類的聲明所在頭文件的後面。
human humen ;
QVariant variant = QVariant::fromValue(humen );
// ...
if (variant.canConvert<human >()) {
human h= variant.value<human>();
// ...
}
QVariant v(709);
//聲明一個QVariant變量v,並初始化爲一個整數。
qDebug()<<v.toInt();
//調用QVariant::toInt()函數將QVariant變量包含的內容轉換爲整數並輸出。
QVariant w("How are you! ");
//聲明一個QVariant變量w,並初始化爲一個字符串。
qDebug()<<w.toString();
//調用QVariant::toString()函數將QVariant變量包含的內容轉換爲字符串並輸出。
QMap<QString,QVariant>map;
//聲明一個QMap變量map,使用字符串做爲鍵,QVariant變量做爲值。
map["int"]=709;
map["double"]=709.709;
map["string"]="How are you! ";
map["color"]=QColor(255,0,0);
qDebug()<<map["int"]<< map["int"].toInt();
qDebug()<<map["double"]<< map["double"].toDouble();
qDebug()<<map["string"]<< map["string"].toString();
qDebug()<<map["color"]<< map["color"].value<QColor>();
//在QVariant變量中保存了一個QColor對象,並使用模板QVariant::value()還原爲QColor,而後輸出。
QStringList sl;
sl<<"A"<<"B"<<"C"<<"D";
QVariant slv(sl);
if(slv.type()==QVariant::StringList)
//QVariant::type()函數返回存儲在QVariant變量中的值的數據類型。QVariant::StringList是Qt定義的一個QVariant::type枚舉類型的變量
{
QStringList list=slv.toStringList();
for(int i=0;i<list.size();++i)
qDebug()<<list.at(i);
}
QDate類對象包含日曆日期,能夠從當前系統時鐘中讀取當前日期,提供了日期比較和操做的函數。
QDate全部成員函數是可重入的。
QDate主要成員函數以下:
QDate::QDate ()
QDate::QDate ( int y, int m, int d )
構造函數
QDate QDate::currentDate () [static]
返回當前日期
QDate QDate::addDays ( int ndays ) const
返回增長ndays天后的日期
QDate QDate::addMonths ( int nmonths ) const
返回增長nmonths個月後的日期
QDate QDate::addYears ( int nyears ) const
返回增長nyears年後的日期
int QDate::day () const
返回日期所在月份的第幾天
int QDate::dayOfWeek () const
返回日期所在周的第幾天
int QDate::dayOfYear () const
返回日期所在年中的第幾天
int QDate::daysTo ( const QDate & d ) const
返回日期到日期d的天數
void QDate::getDate ( int * year, int * month, int * day )
獲取日期的相應年月日到相應參數
bool QDate::isLeapYear ( int year ) [static]
日期是不是閏年
bool QDate::setDate ( int year, int month, int day )
設置日期
QString QDate::toString(const QString & format) const
將日期按指定格式轉換爲QString
int QDate::year () const
返回日期中的年
int QDate::month () const
返回日期中的月
QDateTime類對象包含日曆日期和時鐘時間,是QDate合QTime的結合,能夠從當前系統時間讀取出日期時間,提供了比較和操做日期時間的函數。
QDateTime主要成員函數以下:
QDateTime::QDateTime()
QDateTime::QDateTime(const QDate & date)
QDateTime::QDateTime(const QDate & date, const QTime & time, Qt::TimeSpec spec = Qt::LocalTime)
QDateTime::QDateTime(const QDateTime & other)
構造函數
QDateTime QDateTime::addDays ( int ndays ) const
QDateTime QDateTime::addMSecs ( qint64 msecs ) const
QDateTime QDateTime::addMonths ( int nmonths ) const
QDateTime QDateTime::addSecs ( int s ) const
QDateTime QDateTime::addYears ( int nyears ) const
增長時間
QDateTime QDateTime::currentDateTime () [static]
根據本地時區返回系統時鐘的日期時間
QDateTime QDateTime::currentDateTimeUtc () [static]
根據UTC時區返回系統時鐘的日期時間
QDate QDateTime::date () const
返回日期時間中的日期部分
int QDateTime::daysTo ( const QDateTime & other ) const
返回日期時間到日期時間other的天數
QDateTime QDateTime::fromString(const QString & string, const QString & format) [static]
根據指定的日期時間格式和字符串返回日期時間
int QDateTime::secsTo ( const QDateTime & other ) const
返回日期時間到日期時間other的秒數
void QDateTime::setDate ( const QDate & date )
設置日期
void QDateTime::setTime ( const QTime & time )
設置時間
void QDateTime::setTimeSpec ( Qt::TimeSpec spec )
設置時間的秒數
QTime QDateTime::time () const
返回日期時間的時間部分
QString QDateTime::toString ( const QString & format ) const
根據指定格式將日期時間轉換爲字符串
QDateTime QDateTime::toUTC () const
將日期時間轉換爲UTC日期時間