0

Qt ウィジェット QTextEdit、QPlainTextEdit などで、遭遇したくない機能に遭遇しました。そして、私は実際にこの問題を変更する方法がわかりません。

制御文字であっても、ある Unicode 文字を別の Unicode 文字に置き換えて、テキストを暗号化したい。

したがって、単純な文字列を次のように宣言します。 QChar ch = (QChar)0x20; QChar ch2 = (QChar)0xA0; QString str; str.append(ch); str.append(ch2);

これらは、通常のスペース (0x20) といくつかの異常な No-Break Space (0xA0) です。メモリでは、文字列は完全に完璧です。しかし、ui->txt_ciphered->setPlainText(str);この No-Break Space (0xA0) で QTextEdit のテキストとして設定すると、通常のスペースになります。それは似たような目的のためだと思いますが、例のメモ帳++のようにコピーできるように、TextEditでNo-Break Space文字を取得したいのです。

どうすればこれを変更できますか?

4

1 に答える 1

0

QTextEdit は改行以外のスペースを受け入れません。なぜですか? Qt 編集コントロールで改行以外のスペースを使用するにはどうすればよいですか?

問題は、QTextEdit::plainTextプロパティが非改行スペースの挿入を表現的に妨げ、それを単なるスペース文字に変換することです。

プレーンテキスト: QString

このプロパティは、テキスト エディターのコンテンツをプレーン テキストとして取得および設定します。プロパティが設定されると、以前の内容が削除され、元に戻す/やり直しの履歴がリセットされます。

テキスト編集に別のコンテンツ タイプがある場合、toPlainText() を呼び出してもプレーン テキストに置き換えられません。これに対する唯一の例外は、標準スペースに変換される非改行スペース nbsp; です。

提案: QTextEdit::setTextを使用してください。

それでも不要な変換を行うか、そのシンボルを正しく処理しない場合は、html タグのエンベロープにQTextEdit::setText含まれるテキストを挿入することにより、 HTML 形式のテストを選択する必要があります または.&nbsp;<html>My&nbsp;text</html>

于 2016-06-23T21:08:03.337 に答える