我正在尝试在Qt上的列表框中显示文本。我知道Qt上的列表框只接受QString,所以我尝试使用这里的示例:How do I convert PWSTR to string in C++?并在转换为QString之前将其转换为wstring。 这样做,我在列表框中得到类似的东西:
ፉ靏Ť耀Ý
如果我在控制台上打印出来,它会给我我想要的东西。如何让它在列表框中正确显示。 如何让它正确显示在列表框中?
答案 0 :(得分:3)
您应该使用QString的fromWCharArray
静态函数:
wchar_t* my_string = ...;
QString qstring = QString::fromWCharArray(my_string);
请注意,如果my_string
不是以空值终止的,fromWCharArray()
有一个重载,它会为字符串长度采用第二个参数:
wchar_t* my_string = ...;
size_t my_len = ...;
QString qstring = QString::fromWCharArray(my_string, my_len);
答案 1 :(得分:1)
除Steve Lorimers answer之外,我的MCVE:
#include <QtWidgets>
#include <shlobj.h>
int main()
{
qDebug() << "Qt Version: " << QT_VERSION_STR;
wchar_t *localAppData = nullptr;
SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, NULL, &localAppData);
QString qStr = QString::fromWCharArray(localAppData);
CoTaskMemFree(static_cast<void*>(localAppData));
qDebug() << "localAppData (as QString):" << qStr;
return 0;
}
使用VS2013进行编译和测试:
Qt Version: 5.9.2
localAppData (as QString): "C:\\Users\\Scheff\\AppData\\Local"