我的QT5學習之路(三)――模板庫、工具類和控件(上)
一、前言 “合抱之木,生于毫末;九層之臺,起于壘土;千里之行,始于足下”,上一章我們知道了如何使用Qt創建簡單的示例程序,了解了最基本的Qt框架,在進一步學習Qt框架和消息機制前,我們應該對Qt本身有一個更細致的了解,這個了解就是Qt的模板庫、工具類和控件。
本文引用地址:http://www.104case.com/article/201808/385045.htm回到頂部(go to top)
二、Qt的模板庫、工具類和控件2.1 字符串類1、字符串的操作 我們了解字符串的操作就是要了解字符串主要有哪些操作符,Qt基于C++繼承和強化了string的功能,結構類型為QString,QString提供了一個二元的“+”和“+=”操作符,其中“+=”操作符功能和append函數方法具有同樣的功能,是現在一個字符串末尾追加另一個字符串,學習時可基于C++中String類進行比較。
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組合字符串的另一個函數 QString::sprintf(),此函數支持的格式定義符和C++庫中的函數sprintf定義的一樣。Qt還提供了另外一種方便的字符串組合方式,使用QString::arg()函數,此函數的重載可以處理多種數據類型,一些重載具有額外的參數對字段的寬度、數字基數或者浮點數精度進行控制。相對于sprintf來說,srg是一個比較好的解決方案,因為它類型安全,完全支持Unicode,并且允許改變%n參數的順序。
1 QString str;
2 str=QString(%1 was born in %2 .).arg(Rimond).arg(1990);
3 //str=Rimond was born in 1990.
此外,QString也提供了一些其他組合字符串的方法
函數名稱函數功能
insert()在原字符串特定的位置插入另一個字符串
prepend()在原字符串的開頭插入另一個字符串
replace()用指定的字符串代替原字符串中的某些字符
為了解決特定場景比如去除一個字符串兩端的空白(空白字符包括回車字符“n”,換行字符“r”,制表符“t”和空格字符等),QString提供了特定的函數。
函數名稱函數功能
trimmed() 移出字符串兩端的空白字符
simplified()移除字符串兩端的空白字符,使用單個空格字符“ ”代替字符串中出現的空白字符
1 QString str= Hello t QT n ! ;
2 str=str.trimmed();
3
4 //str= Hello t to n you!
5 //如果使用str=str.simplified(),str的結果是“Hello Qt !”
2、查詢字符串數據 查詢字符串數據有多種樣式。
(1) QString::startsWith()判斷一個字符串是否以某個字符串開頭。此函數具有兩個參數,第一個參數指定了一個字符串,第二個參數指定是否大小寫敏感(默認大小寫敏感)。
1 QString str=Hello Qt!;
2 str.startsWith(Hello,Qt::CaseSensitive); //返回真
3 str.startsWith(Qt,Qt::caseSenstive); //返回假
(2) QString::endwith()類似于QString::startswith(),它用來判斷一個字符串是否以某個字符串結尾。
(3) QString::contains()判斷一個指定的字符串是否出現過。
1 QString str =Hello QT!;
2 str.contains(QT,Qt::CaseSensitive); //返回真
(4) QString類還重載了多種用于比較的操作符,用法可參照C++ string類中重載的比較操作符。此外,QString類增加了兩個特殊函數。
localeAwareCompare(const QString,const QString):靜態函數,比較前后兩個字符串,如果前面字符串小于后面字符串,則返回值為負整數;如果等于則返回0;如果大于則返回值為正整數,該函數用于比較基于本地字符集,而且肫教ㄏ喙氐模通常該函數用于向用戶顯示一個有序的字符串列表。
compare(const QString,const QString::CaseSensitivity):該函數可以指定是否進行大小寫的比較,而大小寫的比較臚耆基于字符的Unicode編碼值的,而且是非常快的,返回值類似于localeAwareCompare函數。
3、字符串的轉換 由于Qt的跨平臺型,可移植性等特點反映了其在字符串上的靈活性,QString類提供了豐富的轉換函數,可以實現講一個字符串轉換為數值類型或者其他的字符編碼集。
(1) QString::toInt()函數實現了將字符串轉換為整型數值,類似的函數還有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分別代表了進制,ok用于傳遞一個地址,表示轉換結果。
(2) QString提供的字符串編碼集的轉換函數將會返回一個const char*類型版本的QByteArry,即構造函數QByteArry(const char*)構造的QByteArry對象。QByteArry類具有一個字符數組,它既可以存儲原始字節(raw bytes),也可以存儲傳統的以“ 主站蜘蛛池模板: 阳春市| 武川县| 连州市| 河西区| 岳池县| 香河县| 绥芬河市| 舟曲县| 桃源县| 青海省| 修武县| 双江| 阳泉市| 宁晋县| 洛浦县| 陕西省| 天等县| 韶山市| 剑阁县| 龙胜| 上林县| 抚州市| 嘉定区| 启东市| 马公市| 香格里拉县| 湟源县| 安远县| 达拉特旗| 华坪县| 禹城市| 奎屯市| 嵊州市| 普安县| 林西县| 茂名市| 二连浩特市| 邵阳市| 周至县| 陇南市| 渭南市|