3

をエディター デリゲートとしてQTableView使用する 1 つの列と、ユーザーが に入力するときに動的に更新する必要がある他の列があります(たとえば、列の 1 つは に入力されたテキストの長さを含み、ユーザーとして更新する必要があります)。 Enter を押してコミットするのを待たない)。QLineEditQLineEditQLineEdit

私はこのコードを使用しました:Qt:編集が完了した後ではなく、QTableViewアイテムデータが編集されている間にシグナルを送信しますか?これは主に機能します。QLineEdit textChanged()信号をエディターの信号に接続しcommitData()ます。

このコードの問題は、ユーザーが入力すると、QLineEditの挿入カーソルが常に末尾にジャンプすることです。行末にテキストを追加する場合は問題ありません。しかし、ユーザーが行の途中でテキストを挿入または編集したい場合、1 文字を入力するたびに、テキスト挿入カーソルがQLineEdit. 各キーストロークの後、途中で挿入/編集を完了するために、カーソルの位置を変更する必要があります。

マッパーを無効にすると、カーソルがジャンプしないため、エディター デリゲートに固有のものではありません。上記のリンクされた質問のコードを使用した場合にのみ発生します。

QLineEdit textChanged()とのコードを見ましたcommitData()が、カーソルが の最後にジャンプする原因がわかりませんQLineEdit。何か案は?ありがとう!

4

1 に答える 1

6

最後のテキスト カーソル位置を覚えておいて、次のように手動で設定できます。

int pos = lineEdit->cursorPosition();
// change text
lineEdit->setCursorPosition(pos);
于 2013-04-04T16:00:07.290 に答える