Qtリファレンス QTextCodec 新しいページはコチラ
提供: yonewiki
(→概要) |
|||
1行: | 1行: | ||
[[Qt#Qtリファレンス|Qtリファレンス]]へ戻る | [[Qt#Qtリファレンス|Qtリファレンス]]へ戻る | ||
− | == '''概要''' == | + | == '''QTextCodec 概要''' == |
Qt5.15.2 | Qt5.15.2 | ||
7行: | 7行: | ||
QTextCodecクラスは純粋仮想関数を含んでいます。継承して純粋仮想関数(name, mibEnum, convertToUnicord, convertFromUnicode)を新規に定義したクラスを作らないとQTextCodecの実体を作ることは出来ません。以下のようにメンバ関数だけを使うことは簡単に出来ます。 | QTextCodecクラスは純粋仮想関数を含んでいます。継承して純粋仮想関数(name, mibEnum, convertToUnicord, convertFromUnicode)を新規に定義したクラスを作らないとQTextCodecの実体を作ることは出来ません。以下のようにメンバ関数だけを使うことは簡単に出来ます。 | ||
+ | |||
+ | === '''静的 static''' === | ||
+ | obj.xxxx()のように呼び出すのではなく、QTextCodec::xxxx()のようにして実体化されてなくても使える関数 | ||
+ | ==== '''静的メンバ関数 setCodecForLocale''' ==== | ||
*<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">void</span> <span style="color:blue;">QTextCodec::setCodecForLocale</span>(<span style="color:deeppink;">QTextCodec*</span> QTextCodecLocale);</span> | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">void</span> <span style="color:blue;">QTextCodec::setCodecForLocale</span>(<span style="color:deeppink;">QTextCodec*</span> QTextCodecLocale);</span> | ||
13行: | 17行: | ||
こんな感じで、テキストのCodecを定義が出来て、文字コードUnicodeのエンコード方式UTF-8を使うことを定義できます。これはQtライブラリで扱う文字に対して、入力として受け取った文字列を自動判別した文字コードをUTF-8へエンコードするという事を宣言するもので、Qtライブラリ内で扱う文字列をICUライブラリを通して、変換して扱うということを意味しています。Qtプロジェクトを立ち上げた時に生成されるQCoreGlobalDataというクラスのオブジェクトでコーデック名称が記憶されるようです。 | こんな感じで、テキストのCodecを定義が出来て、文字コードUnicodeのエンコード方式UTF-8を使うことを定義できます。これはQtライブラリで扱う文字に対して、入力として受け取った文字列を自動判別した文字コードをUTF-8へエンコードするという事を宣言するもので、Qtライブラリ内で扱う文字列をICUライブラリを通して、変換して扱うということを意味しています。Qtプロジェクトを立ち上げた時に生成されるQCoreGlobalDataというクラスのオブジェクトでコーデック名称が記憶されるようです。 | ||
− | |||
+ | |||
+ | QTextCodecクラスのメンバ関数setCodecForLocaleの引数にQTextCodec型の戻り値の関数 or QTextCodec型のオブジェクトを指定する形式です。上記の例では以下で説明するようなQTextCodec型の戻り値を持つ関数を引数にしています。 | ||
+ | |||
+ | ==== '''静的メンバ関数 codecForName''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForName</span>(<span style="color:deeppink;">const QByteArray&</span> name)</span> | ||
*<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForName</span>(<span style="color:deeppink;">const char*</span> name)</span> | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForName</span>(<span style="color:deeppink;">const char*</span> name)</span> | ||
− | + | この一つ前に出てきたQTextCodecクラスのメンバ関数の引数に使うもので、上の例の使い方の場合だと一つ目に書いた引数のカタチ(const char*)になっていて引数には文字コードのエンコード方式を指定します。設定できる値は | |
33行: | 41行: | ||
*Big5/Big5-HKSCS/GB18030/HP-ROMAN8/IBM 850/IBM 866/IBM 874/Macintosh/TIS-620/TSCII/CP949/EUC-KR/ | *Big5/Big5-HKSCS/GB18030/HP-ROMAN8/IBM 850/IBM 866/IBM 874/Macintosh/TIS-620/TSCII/CP949/EUC-KR/ | ||
ISO 8859-1 to 10/ISO 8859-13 to 16/Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml/KOI8-R/KOI8-U/Windows-1250 to 1258 | ISO 8859-1 to 10/ISO 8859-13 to 16/Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml/KOI8-R/KOI8-U/Windows-1250 to 1258 | ||
+ | |||
+ | で、ほぼ全てのコーデックに対応しているといって良いしょう。上記以外の文字を使っているOSがあったら、そんなもの無くなってしまえと思うのだろう。 | ||
※const QByteArray &nameを引数にとる多重定義もされています。 | ※const QByteArray &nameを引数にとる多重定義もされています。 | ||
※Qt4ではQTextCodec::setCodecForLocaleではなくQTextCodec::setCodecForCStringという名前でした。 | ※Qt4ではQTextCodec::setCodecForLocaleではなくQTextCodec::setCodecForCStringという名前でした。 | ||
+ | |||
+ | |||
+ | |||
+ | ==== '''静的メンバ関数 availableCodecs''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QList<QByteArray></span> <span style="color:blue;">QTextCodec::availableCodecs</span>()</span> | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QList<int></span> <span style="color:blue;">QTextCodec::availableMibs</span>()</span> | ||
+ | |||
+ | |||
+ | |||
+ | ==== '''静的メンバ関数 codecForHtml''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForHtml</span>(<span style="color:deeppink;">const QByteArray&</span> ba, <span style="color:deeppink;">QTextCodec*</span> defaultCodec)</span> | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForHtml</span>(<span style="color:deeppink;">const QByteArray&</span> ba)</span> | ||
+ | |||
+ | |||
+ | |||
+ | ==== '''静的メンバ関数 codecForLocale''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForLocale</span>()</span> | ||
+ | |||
+ | |||
+ | |||
+ | ==== '''静的メンバ関数 codecForMib''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecForMib</span>(<span style="color:deeppink;">int</span> mib)</span> | ||
+ | |||
+ | |||
+ | |||
+ | ==== '''静的メンバ関数 codecForUtfText''' ==== | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecUtfText</span>(<span style="color:deeppink;">const QByteArray&</span> ba, <span style="color:deeppink;">const QTextCodec*</span> defaultCodec)</span> | ||
+ | *<span style = "background:linear-gradient(transparent 75%, #ffbf7f 75%); font-weight:bold; "><span style="color:deeppink;">QTextCodec*</span> <span style="color:blue;">QTextCodec::codecUtfText</span>(<span style="color:deeppink;">const QByteArray&</span> ba)</span> | ||