在转换到QString
之前,需要先明确TChar
此时代表什么类型。
在 Visual Studio 中, 选择【项目属性页】--》【配置属性】--》【高级】页面, 查看【字符集】选项。
如果选定的是【使用Unicode字符集】, 那么TChar
代表wchar_t
。如果选择其他的, TChar
代表char
。
如果你想要验证这一点,那么就写如下的代码, 需改【字符集】选项后,亲自看看TChar
的定义即可。
#include <tchar.h>
int test()
{
TCHAR hi[128] = { 0 };
}
当TCHAR
代表wchar_t
时, 你的字符串前面,要加一个L
开头。Windows.h
中定义的TEXT()
宏和tchar.h
中定义的_T
宏就是干这件事的。下面三个函数,其实是等价的。
int test()
{
const TCHAR* hiMsg = L"Hiiii";
}
#include <tchar.h>
int test1()
{
const TCHAR* hiMsg = _T("Hiii");
}
#include <Windows.h>
int test2()
{
const TCHAR* hiMsg = TEXT("Hiii");
}
可见, 把TCHAR
转换为QString
非常简单,只要明确TChar
代表什么类型即可。如果TChar
当前代表的是char
,那么你可以赋值给QString。 如果TChar
当前代表的是wchar_t
,那么你可以使用如下的API
来做。
// #include < Windows.h>
QString iAmFromTChar = QString::fromWCharArray(TEXT("I am from TChar"));
// #include <tchar.h>
QString iAmFromTChar = QString::fromWCharArray(_T("I am from TChar"));