QT開發(二十七)——QT經常使用類(一)

QT開發(二十七)——QT經常使用類(一)

1、QString

1QString簡介

    QString提供了Unicode編碼的字符串,使用隱式共享技術來節省內存和沒必要要的數據拷貝,沒必要考慮跨平臺的兼容性。html

    QString類成員函數中除了 ascii()、latin1()、utf8()、local8Bit()函數,其餘全部的函數都是可重入的。數據庫

二、QString成員函數

QString::QString ( const QChar * unicode, int size )

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個字符的字符串

3QString實例

字符串操做

    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位字符串

2、QTextCodec

1QTextCodec簡介

    QT默認使用Unicode編碼,不能顯示中文,而操做系統默認通常爲本地的編碼,如GB2312,所以須要修改QT中的編碼方式顯示中文。

    QTextCodec提供了不一樣編碼文本之間的轉換。

    QT使用Unicode編碼存儲、繪製、操做字符串。不少狀況下,須要使用不一樣的編碼方式處理字符串。QT提供了一套QTextCodec類用於在Unicode和非Unicode編碼間轉換。

使用不一樣編碼方式讀寫文件時,可使用QTextStream及其setCodec()函數。

二、QTextCodec成員函數

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編碼後的字符串

三、QTextCodec實例

Unicode編碼字符串轉化爲本地編碼字符串

 QString string = "...";

 QTextCodec *codec = QTextCodec::codecForName("KOI8-R");

 QByteArray encodedString = codec->fromUnicode(string);

3、QByteArray

1QByteArray簡介

    QByteArray提供一個字節數組,能夠像C++數組同樣使用。

    QByteArray用於存儲原始字節數據(包括\0經典的8位編碼的字符串數據\0結束使用QByteArrayconst char *更方便。背後緣由實際上是,QByteArray總會確保數據以\0結束,而且使用隱式共享技術減小內存開銷和沒必要要的數據拷貝。

    QByteArray自動的保證最後一個字節以後的那位的值是「\0」,致使QByteArray能夠容易的轉變爲const char*,一樣做爲存儲二進制的數據類型,QByteArray中間也能夠存儲「\0」。

2QByteArray成員函數

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實例

 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"

4、QVariant

1QVariant簡介

    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類,方便讀寫數據。

二、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存儲的數據類型

    自定義QVariant存儲的數據類型必須有一個默認的構造函數和一個拷貝構造函數,同時必須使用Q_DECLARE_METATYPE()宏放在類的聲明所在頭文件的面。

human humen ;  

QVariant variant = QVariant::fromValue(humen );  

// ...  

if (variant.canConvert<human >()) {  

    human h= variant.value<human>();  

    // ...  

}

4QVariant實例

 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::StringListQt定義的一個QVariant::type枚舉類型的變量

    {

        QStringList list=slv.toStringList();

        for(int i=0;i<list.size();++i)

            qDebug()<<list.at(i);

    }

5、QDate

1 QDate簡介

     QDate類對象包含日曆日期,能夠從當前系統時鐘中讀取當前日期,提供了日期比較和操做的函數。

 QDate全部成員函數是可重入的。

 2QDate成員函數

 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

返回日期中的月

6、QDateTime

1QDateTime簡介

    QDateTime類對象包含日曆日期和時鐘時間,是QDateQTime的結合,能夠從當前系統時間讀取出日期時間,提供了比較和操做日期時間的函數。

2QDateTime成員函數

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日期時間

相關文章
相關標籤/搜索