如何将PWSTR转换为QString以在列表框中显示

How to convert PWSTR to QString to display in a listbox

本文关键字:列表 显示 QString PWSTR 转换      更新时间:2023-10-16

我正在尝试在qt上的列表框中显示文本。我知道QT上的列表框仅接受QString,因此我尝试在此处使用该示例:如何将PWSTR转换为C 中的字符串?并将其转换为Wstring,然后再转换为QString。这样做,我在列表框中得到了类似的东西:

r

。�������农业。

如果我在控制台上将其打印出来,它会给我我想要的东西。如何使其正确显示在列表框中。如何正确显示在列表框中?

您应该使用QString的fromWCharArray静态函数:

wchar_t* my_string = ...;
QString qstring = QString::fromWCharArray(my_string);

请注意,如果my_string不是null终止,则fromWCharArray()的过载是字符串长度的第二个参数:

wchar_t* my_string = ...;
size_t my_len = ...;
QString qstring = QString::fromWCharArray(my_string, my_len);

除了史蒂夫·洛里默斯(Steve Lorimers

#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"

resp。功能是QString::fromWCharArray()