2

非常に多くのテキストを表示する QTextEdit があります。編集できません。最初のあたりで何かを読みたいとします。上にスクロールすると、新しい行が追加され、スクロールバーが自動的に一番下に移動します。さまざまなプログラムを使用しているときに同様の問題が発生します (それらが作成された言語に関係なく)。この問題にどのように対処しますか?

テキストに新しい行が追加されたときに必要な動作:

  • スクロールバーが一番下にある場合は、自動的に下にスクロールします。
  • スクロールバーが他の場所にある場合は、スクロールしないでください

QTextEdit は編集できず、ユーザーはその中をクリックせず、カーソルの位置は垂直スクロールバーの位置と同じではないため、ensureCursorVisible() は解決策ではないと思います。

4

2 に答える 2

3

スクロールバーの位置リスナーを作成します。これにより、スクロール時の位置が記憶されます(また、下部にあるかどうかも確認されます)。

次に、新しい行が追加されたら、それが一番下にあるかどうかを確認します。下にスクロールする場合は、他の場所にある場合は、その位置にスクロールして戻ります。

このQScrollBarを確認してください。これは、horizo​​ntalScrollBar()およびverticalScrollBar()を介してQTextEditから取得できます。


より具体的には、スロットをQScrollBarからのシグナルに接続します-valueChanged(int value)ここで説明されているように、値を操作します。

于 2013-01-27T18:39:52.687 に答える