QT一些容易犯錯(cuò)的點(diǎn)

概述

這些點(diǎn)都是建立在qt5.0之后的豪嗽,而且以默認(rèn)中文操作系統(tǒng)為準(zhǔn)

關(guān)于文字編碼

這里說(shuō)的文字編碼主要指的漫试,當(dāng)你要顯示一段文字時(shí)祈匙,否則沒(méi)必要管編碼魏保。
比如在qt里書(shū)寫(xiě)如下代碼:
const char *cp = "中國(guó)";
那么這個(gè)cp里面是什么內(nèi)容呢,如果調(diào)用ui->label->setText(cp),又是否能正確顯示呢漂坏?
我們只說(shuō)結(jié)論景埃,細(xì)節(jié)參考 其它文章,網(wǎng)上不少

  1. cp里面是什么內(nèi)容呢?
    首先cp是一段buffer顶别,運(yùn)行時(shí)里面是什么內(nèi)容要根據(jù)運(yùn)行時(shí)的編碼來(lái)決定,關(guān)于各種編碼定義是個(gè)新課題谷徙,不適合筆記。
    當(dāng)運(yùn)行時(shí)編碼是utf-8時(shí)驯绎,cp是6個(gè)字節(jié)的buffer(不含\0)
    當(dāng)運(yùn)行時(shí)編碼是GBK時(shí)完慧,cp是4個(gè)字節(jié)的buffer(不含\0)

  2. cp又是否能正確顯示呢?
    在Qt中条篷,唯一能讓人迷惑的就是類(lèi)似這樣的代碼亂碼 (windows下 使用msvc kit)
    setText(tr(“中國(guó)”))
    此處出亂碼是有個(gè)隱形的東西骗随,msvc kit在中文系統(tǒng)會(huì)默認(rèn)指定前文提到的運(yùn)行時(shí)編碼為GBK蛤织, 這就導(dǎo)致cp也就是tr括弧內(nèi)的"中國(guó)“為 4字節(jié)的gbk編碼,而不是tr預(yù)期的6字節(jié)utf-8編碼赴叹,然后tr按照utf8去解釋這個(gè)gbk的buffer,那自然是亂碼指蚜。
    如何克服呢乞巧, 在.pro加個(gè)編譯選項(xiàng)即可
    QMAKE_CXXFLAGS += -execution-charset:utf-8
    rebuild 后發(fā)現(xiàn)亂碼解決了
    這里要提一個(gè)點(diǎn) qt5.0后 tr宏不在可以指定codec了,也就是說(shuō)它會(huì)固定認(rèn)為 tr擴(kuò)起來(lái)的buffer是utf8編碼摊鸡,如果不是绽媒,又沒(méi)翻譯文件的話(huà),會(huì)出亂碼免猾,上文中國(guó)出亂碼就是因?yàn)闆](méi)改之前tr里面不是utf8的編碼
    你查看tr源碼就會(huì)發(fā)現(xiàn)是辕,它先去翻譯文件找這個(gè)字符串,如果找不到猎提,直接調(diào)用QSring::fromUtf8(cp), 那說(shuō)道這获三,其實(shí)都真像(●—●)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市疙教,隨后出現(xiàn)的幾起案子棺聊,更是在濱河造成了極大的恐慌,老刑警劉巖贞谓,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件限佩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡裸弦,警方通過(guò)查閱死者的電腦和手機(jī)祟同,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)理疙,“玉大人耐亏,你說(shuō)我怎么就攤上這事』φ澹” “怎么了广辰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)主之。 經(jīng)常有香客問(wèn)我择吊,道長(zhǎng),這世上最難降的妖魔是什么槽奕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任几睛,我火速辦了婚禮,結(jié)果婚禮上粤攒,老公的妹妹穿的比我還像新娘所森。我一直安慰自己,他們只是感情好夯接,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布焕济。 她就那樣靜靜地躺著,像睡著了一般盔几。 火紅的嫁衣襯著肌膚如雪晴弃。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼匹中。 笑死沪饺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谴咸!你這毒婦竟也來(lái)了度硝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤寿冕,失蹤者是張志新(化名)和其女友劉穎蕊程,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體驼唱,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡藻茂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玫恳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辨赐。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖京办,靈堂內(nèi)的尸體忽然破棺而出掀序,到底是詐尸還是另有隱情,我是刑警寧澤惭婿,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布不恭,位于F島的核電站,受9級(jí)特大地震影響财饥,放射性物質(zhì)發(fā)生泄漏换吧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一钥星、第九天 我趴在偏房一處隱蔽的房頂上張望沾瓦。 院中可真熱鬧,春花似錦谦炒、人聲如沸贯莺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缕探。三九已至,卻和暖如春透且,著一層夾襖步出監(jiān)牢的瞬間撕蔼,已是汗流浹背豁鲤。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工秽誊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琳骡。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓锅论,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親楣号。 傳聞我的和親對(duì)象是個(gè)殘疾皇子最易,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一怒坯、文件/文件夾管理 ls 列出當(dāng)前目錄文件(不包括隱含文件) ls -a 列出當(dāng)前目錄文件(包括隱含文件) ls...
    小杰的簡(jiǎn)書(shū)閱讀 2,508評(píng)論 0 45
  • 進(jìn)入帶空格的文件或者文件夾 Linux文件權(quán)限詳解 文件和目錄權(quán)限概述 在linux中的每一個(gè)文件或目錄都包含有訪(fǎng)...
    annkee閱讀 2,668評(píng)論 0 4
  • 一、文件/文件夾管理 ls 列出當(dāng)前目錄文件(不包括隱含文件) ls -a 列出當(dāng)前目錄文件(包括隱含文件) ls...
    會(huì)飛的魚(yú)Coo閱讀 4,514評(píng)論 1 23
  • Ubuntu 常用命令大全 查看軟件 xxx 安裝內(nèi)容 #dpkg -L xxx 查找軟件 #apt-cache ...
    guiwuzhe閱讀 2,550評(píng)論 0 14
  • 一藻懒、文件/文件夾管理 ls 列出當(dāng)前目錄文件(不包括隱含文件)ls -a 列出當(dāng)前目錄文件(包括隱含文件)l...
    路癡千行閱讀 2,398評(píng)論 0 5