字元編碼問題詳解:
使用unicode字符集:
int t1=sizeof(tchar); 2
int t2=sizeof(char); 1
使用多位元組字符集:
int t1=sizeof(tchar); 1
int t2=sizeof(char); 1
未設定:
int t1=sizeof(tchar); 1
int t2=sizeof(char); 1
從父級或專案預設設定繼承:
int t1=sizeof(tchar); 1
int t2=sizeof(char); 1
以 createfile 為例 不同的字符集設定,要使用不同的函式 : 不同函式處理方式不一樣 有些是這樣,有些不是這樣
#ifdef unicode // 相等於 設定中勾選 使用unicode字符集:
#define createfile createfilew
#else
#define createfile createfilea
#endif // !unicode
createfilew(
__in lpcwstr lpfilename,
__in dword dwdesiredaccess,
__in dword dwsharemode,
__in_opt lpsecurity_attributes lpsecurityattributes,
__in dword dwcreationdisposition,
__in dword dwflagsandattributes,
__in_opt handle htemplatefile
);createfilea(
__in lpcstr lpfilename,
__in dword dwdesiredaccess,
__in dword dwsharemode,
__in_opt lpsecurity_attributes lpsecurityattributes,
__in dword dwcreationdisposition,
__in dword dwflagsandattributes,
__in_opt handle htemplatefile
);比較 createfilew createfilea 發現 第乙個引數 lpfilename, 的型別不一樣,lpcwstr lpcstr 可見編碼格式對它的影響。
參考 也可以對介面上的進行翻譯 ,同樣的原理 介面上有乙個屬性,可翻譯的,就表示這個意思 (tr)
下面是另外一
langswitch.h:
#ifndef langswitch_h
#define langswitch_h
#include #include #include class langswitch : public qwidget
;#endif // mainwindow_h
langswitch.cpp:
#include "langswitch.h"
qwidget(parent)
langswitch::~langswitch()
void langswitch::changelang(int indexx)
void langswitch::createscreen()
void langswitch::changetr(const qstring &langcode)
translatort=new qtranslator;
qstring qmfilename="lang_"+langcode;
qstring ss=qdir::currentpath();//e:\delcode\build-untitled-desktop_qt_5_5_1_msvc2010_32bit_qt_55_w-debug
//if(translatort->load(qstring("../")+qmfilename))
if(translatort->load(qmfilename))//詳見load的說明,首先載入 的是ss中的 .qm 檔案 所以要更新,還要發布 其實所有的qm檔案是同乙份,會對應不同的資料 取值
}void langswitch::refreshlabel()
有些**中是不基於qobject 的,下面是**中的解決方案,以及圖:
class xx
;int main(int argc, char *argv)
return a.exec();
}
圖:
先看圖:
qt 中文亂碼 Qt中文亂碼問題
接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...
亂碼問題 Qt中文亂碼問題
接觸了qt,由於習慣中vs,如果使用vs寫qt 剛接觸很快就發現有中文亂碼問題,我的解決方法如下 新建乙個標頭檔案,比如qtchcharset.h,標頭檔案中內容如下 pragma once ifdef q os win q os win 新增後支援gb2312,utf 8 bom,unicode ...
QT 中文亂碼問題
1,將設定改為 如果是utf 8編碼,則新增 2,cpp檔案開始新增 pragma execution character set utf 8 根據 qt 的文件 中規定 qstring 的 const char 建構函式是呼叫 fromutf8 構造的。所以要求字串字面量是 utf 8 編碼的位元...