Qtでは、char入力の次のcharを表示するものを作成したいと思います。
たとえば、QTextEditに「a」と入力すると、別のQTextEditでは自動的に「b」に変わり、もう一度「b」と入力すると「c」に変わります。これに最適なアルゴリズムはどれですか?
文字を直接変更できる場合は、各文字をのように設定できますtChar = iChar + 1
。文字以外のもの(スペースまたはEnterキー)を入力すると、少し不安定になります。その場合if (iChar >= 'a' && iChar <= 'Z') {
は、「n」構文を使用して実際の番号コードをエイリアスするようにラップします。もう1つの方法は、Qtexteditコントロールをサブクラス化し、void Qtextedit::keyReleaseEvent(QKeyEvent* event)
仮想関数をオーバーロードしてキーストロークをインターセプトし、その方法を確認することです。比較は似ていますが、「a」の代わりにQt :: Key_Aを使用して文字キーであることを確認し、結果の文字を適切に変更します。
コメントで述べたように、次のことを実行する必要があります (コードではありません)。
ステップ2は(あなたの例から)テキストに複数の文字があることを確認することであり、それがstd :: stringであると仮定すると、取得text[text.length() -1]
し、ステップ3は2番目のテキストボックスのテキストを取得し、その文字を追加して割り当てます.
これは、文字列内の各文字を再変更するのではなく、追加された文字のみを変更するため、変更可能または変更不可能な 2 番目のテキスト ボックスで機能します。
ただし、何を実現したいかを明確に定義する必要があります。