8

インタラクティブなウィジェットの事実上無限のスクロール可能なリストを表示し、新しいデータが追加されたとき、またはユーザーがキャッシュされていない領域にスクロールしたときに、必要に応じてそれらを追加/削除する必要があります。

TreeView (ここで質問されているように) はオプションではありません。アイテムとして完全なウィジェットが必要なためです (複数のアクションなどを含む標準ウィジェットで構成されていますが、CellRenderer はこのためではありません)。

さらに悪いことに、ウィジェットの高さを事前に把握していないため (あまり変動はありませんが)、VBox を使用するとジャンプが発生する可能性があります。

スクロールバーを使用すると、リストのサイズが有限であるかのように感じるはずです (つまり、スクロールが終了した後にのみ更新されるため、スクロールボタンがマウスから離れることはありません)。ウィンドウのサイズを変更してウィンドウのレイアウトが更新されると、スクロール位置があまり変更しないでください (もちろん、フォーカスされたウィジェットがスクロールされない限り、フォーカスされたウィジェットはその場所にとどまるべきです...)。

これを行う最善の方法は何ですか?たぶん、新しいウィジェットを追加する必要があるときに信号を送るだけのライブラリでさえありますか?

それとも、ListView がこれをあまり厄介ではない方法で行うように強制できますか? (つまり、オフスクリーン バッファに描画し、CellRenderer を使用してそれをセルにコピーし、マウス/キーボード イベントを実際のウィジェットにリレーしますか?)

4

1 に答える 1

3

無限リストの場合、スクロールバーで何かを達成しようとするべきではありません - これは有限リストのみを対象としています。

私の提案は、2 つのボタンを持つオーバーレイを使用することです。

+------------+
| UP ARROW   |
+------------+
| ITEM  N    |
| ITEM  N+1  |
| ITEM  N+2  |
+------------+
| DOWN ARROW |
+------------+

ボタン間のリストについては、おそらくカスタム コンテナー ウィジェットを自分で実装する必要があります。各方向に n (>=2) 個のウィジェット/アイテムを事前にバッファすることをお勧めします。

カスタム コンテナとはあまり関係ありませんが、カスタム ウィジェット - 出発点

http://zetcode.com/tutorials/cairographicstutorial/customgtkwidget/

http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28

http://old.nabble.com/Custom-container-%2B-Child-type-with-interface-td26863728.html

于 2012-09-15T10:01:30.590 に答える