日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀] 一、前言  “合抱之木,生于毫末;九層之臺(tái),起于壘土;千里之行,始于足下”,上一章我們知道了如何使用Qt創(chuàng)建簡(jiǎn)單的示例程序,了解了最基本的Qt框架,在進(jìn)一步

 一、前言  “合抱之木,生于毫末;九層之臺(tái),起于壘土;千里之行,始于足下”,上一章我們知道了如何使用Qt創(chuàng)建簡(jiǎn)單的示例程序,了解了最基本的Qt框架,在進(jìn)一步學(xué)習(xí)Qt框架和消息機(jī)制前,我們應(yīng)該對(duì)Qt本身有一個(gè)更細(xì)致的了解,這個(gè)了解就是Qt的模板庫(kù)、工具類(lèi)和控件。

回到頂部(go to top)

二、Qt的模板庫(kù)、工具類(lèi)和控件2.1 字符串類(lèi)1、字符串的操作  我們了解字符串的操作就是要了解字符串主要有哪些操作符,Qt基于C++繼承和強(qiáng)化了string的功能,結(jié)構(gòu)類(lèi)型為QString,QString提供了一個(gè)二元的“+”和“+=”操作符,其中“+=”操作符功能和append函數(shù)方法具有同樣的功能,是現(xiàn)在一個(gè)字符串末尾追加另一個(gè)字符串,學(xué)習(xí)時(shí)可基于C++中String類(lèi)進(jìn)行比較。

1 QString str1="nihao";

2 QString str2="Qt";

3

4 str1+=str2; //str1="nihaoQt"

5 str1=str1+str2; //str1="nihaoQtQt"

6 str1.append(str2); //str1="nihaoQtQtQt"

7 str1.append("yes"); //str1="nihaoQtQtQtyes"

 Qt組合字符串的另一個(gè)函數(shù)楇 QString::sprintf(),此函數(shù)支持的格式定義符和C++庫(kù)中的函數(shù)sprintf定義的一樣。Qt還提供了另外一種方便的字符串組合方式,使用QString::arg()函數(shù),此函數(shù)的重載可以處理多種數(shù)據(jù)類(lèi)型,一些重載具有額外的參數(shù)對(duì)字段的寬度、數(shù)字基數(shù)或者浮點(diǎn)數(shù)精度進(jìn)行控制。相對(duì)于sprintf來(lái)說(shuō),srg是一個(gè)比較好的解決方案,因?yàn)樗?lèi)型安全,完全支持Unicode,并且允許改變"%n"參數(shù)的順序。

1 QString str;

2 str=QString("%1 was born in %2 .").arg("Rimond").arg(1990);

3 //str="Rimond was born in 1990".

此外,QString也提供了一些其他組合字符串的方法

函數(shù)名稱函數(shù)功能

insert()在原字符串特定的位置插入另一個(gè)字符串

prepend()在原字符串的開(kāi)頭插入另一個(gè)字符串

replace()用指定的字符串代替原字符串中的某些字符

為了解決特定場(chǎng)景比如去除一個(gè)字符串兩端的空白(空白字符包括回車(chē)字符“n”,換行字符“r”,制表符“t”和空格字符等),QString提供了特定的函數(shù)。

函數(shù)名稱函數(shù)功能

trimmed() 移出字符串兩端的空白字符

simplified()移除字符串兩端的空白字符,使用單個(gè)空格字符“ ”代替字符串中出現(xiàn)的空白字符

1 QString str=" Hello t QT n ! ";

2 str=str.trimmed();

3

4 //str=" Hello t to n you! "

5 //如果使用str=str.simplified(),str的結(jié)果是“Hello Qt !”

2、查詢字符串?dāng)?shù)據(jù)  查詢字符串?dāng)?shù)據(jù)有多種樣式。

(1) QString::startsWith()判斷一個(gè)字符串是否以某個(gè)字符串開(kāi)頭。此函數(shù)具有兩個(gè)參數(shù),第一個(gè)參數(shù)指定了一個(gè)字符串,第二個(gè)參數(shù)指定是否大小寫(xiě)敏感(默認(rèn)大小寫(xiě)敏感)。

1 QString str="Hello Qt!";

2 str.startsWith("Hello",Qt::CaseSensitive); //返回真

3 str.startsWith("Qt",Qt::caseSenstive); //返回假

(2) QString::endwith()類(lèi)似于QString::startswith(),它用來(lái)判斷一個(gè)字符串是否以某個(gè)字符串結(jié)尾。

(3) QString::contains()判斷一個(gè)指定的字符串是否出現(xiàn)過(guò)。

1 QString str ="Hello QT!";

2 str.contains("QT",Qt::CaseSensitive); //返回真

(4) QString類(lèi)還重載了多種用于比較的操作符,用法可參照C++ string類(lèi)中重載的比較操作符。此外,QString類(lèi)增加了兩個(gè)特殊函數(shù)。

localeAwareCompare(const QString&,const QString&):靜態(tài)函數(shù),比較前后兩個(gè)字符串,如果前面字符串小于后面字符串,則返回值為負(fù)整數(shù);如果等于則返回0;如果大于則返回值為正整數(shù),該函數(shù)用于比較基于本地字符集,而且楇平臺(tái)相關(guān)的,通常該函數(shù)用于向用戶顯示一個(gè)有序的字符串列表。

compare(const QString&,const QString&::CaseSensitivity):該函數(shù)可以指定是否進(jìn)行大小寫(xiě)的比較,而大小寫(xiě)的比較楇完全基于字符的Unicode編碼值的,而且是非??斓?,返回值類(lèi)似于localeAwareCompare函數(shù)。

3、字符串的轉(zhuǎn)換  由于Qt的跨平臺(tái)型,可移植性等特點(diǎn)反映了其在字符串上的靈活性,QString類(lèi)提供了豐富的轉(zhuǎn)換函數(shù),可以實(shí)現(xiàn)講一個(gè)字符串轉(zhuǎn)換為數(shù)值類(lèi)型或者其他的字符編碼集。

(1) QString::toInt()函數(shù)實(shí)現(xiàn)了將字符串轉(zhuǎn)換為整型數(shù)值,類(lèi)似的函數(shù)還有toDouble()、toFloat()、toLong()、toLongLong()等。

1 QString str="125";

2 bool ok;

3 int hex=str.toInt(&ok,16); //ok=true,hex=293

4 int dec=str.toInt(&ok,10); //ok=true,dec=125

可以看到上面的16和10分別代表了進(jìn)制,ok用于傳遞一個(gè)地址,表示轉(zhuǎn)換結(jié)果。

(2) QString提供的字符串編碼集的轉(zhuǎn)換函數(shù)將會(huì)返回一個(gè)const char*類(lèi)型版本的QByteArry,即構(gòu)造函數(shù)QByteArry(const char*)構(gòu)造的QByteArry對(duì)象。QByteArry類(lèi)具有一個(gè)字符數(shù)組,它既可以存儲(chǔ)原始字節(jié)(raw bytes),也可以存儲(chǔ)傳統(tǒng)的以“