2017-11-22 23 views
0

Qtのリストボックスにテキストを表示しようとしています。私はQtのリストボックスはQStringだけを受け入れることを知っているので、ここでは例を使ってみました:How do I convert PWSTR to string in C++?そしてQStringに変換する前にwstringに変換しました。 これを行うと、リストボックスに次のようなものが表示されます。PWSTRをQStringに変換してリストボックスに表示する方法

ፉ靏Ṯ耀耀 Ý

私はそれをコンソールに表示すると、私が望むものリストボックスに正しく表示させるにはどうすればいいですか? リストボックスに正しく表示させるにはどうすればよいですか?

答えて

3

あなたはQStringののfromWCharArray静的関数を使用する必要がありますmy_stringは、NULLで終了しない場合には、fromWCharArray()が文字列の長さのために第二のパラメータを受け取るオーバーロードがあることを

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

注:

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

'std :: wstring'との混乱を避けるために、変数名に' wstring'を使用しません –

+0

@RemyLebeau十分に公正で、あなたの提案を反映するように答えを更新しました –

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" 

RESP。機能はQString::fromWCharArray()です。

関連する問題