• ベストアンサー

VC2008+Qtの文字化け

VisialC++2008ExpressEdition + Qt4でGUIアプリを書いています QMainwindowのタイトルなどは正常なんですが int ret = QMessageBox::waring(this, "確認", "OKを押してください", QMessageBox::Ok | QMessageBox::Cancel); でメッセージボックスだけが、タイトル、テキストとも文字化けしてしまいます。 対処方をご存知ないでしょうか? よろしく、お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

QMessageBox::warning http://doc.trolltech.com/4.5/qmessagebox.html#warning より、第2、第3引数は「const QString &」を欲するようです。 QString http://doc.trolltech.com/4.5/qstring.html より、QStringのコンストラクタにはconst char*のものはあるようですが、 const wchar_t*のものはないようです。 →L"~"を指定するとエラーになる理由。 QStringに日本語を入れれば解決できそうですので、「QString 日本語」で 検索したところ、即ヒットしました。 http://calmlight.s2.zmx.jp/Qt4Examples/Japanese.html が、 >QMainwindowのタイトルなどは正常なんですが ということはすでにやってあるっぽいですね。 trを使ってもダメでしょうか?

anubis37
質問者

お礼

QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); を宣言することで、日本語が表示できるようになりました。 MainWindowは、QtDesignerでつくったので、何もしなくても日本語表示 できたようです。 自分で書いたコードでは、先の宣言が必要なようです。 ありがとうございまいした。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

# 間違っているかもしれませんが UnicodeとMBCSの違いってことでは? VC2005以降はコード記述の標準がMBCS(マルチバイト文字)からUnicodeに変更されています 文字リテラルを "確認"を L"確認" といった具合にしてみてください

anubis37
質問者

お礼

ご回答、ありがとうございました。 残念ながら、L"確認"はコンパイルエラーになってしまいます。 たぶん、おっしゃるようにUnicode絡みとは思うんですが、メインウィウンドウは ちゃんと表示されるのに、MessageBoxだけっつ

すると、全ての回答が全文表示されます。

関連するQ&A