4

pyqtアプリケーションにQTableViewがあります。基になるモデルに行を継続的に追加します。そして、私が欲しいのは、最後の最新の行まで継続的にスクロールするビューです(その動作は「自動スクロール」と呼ばれますか?)。ただし、代わりに、ビューはまったく(自動的に)スクロールせず、その位置に留まります。

この自動スクロール動作を何らかの方法で有効にできますか、それともそれを実現するために何かをコーディングする必要がありますか?

乾杯、ヴォ​​ルフガング

4

1 に答える 1

3

デフォルトの自動スクロール機能はありませんが、動作は比較的簡単にできます。rowsInserted行を挿入/追加すると、モデルが放出されます。その信号に接続して、ビューを呼び出すことができscrollToBottomます。

ただし、1つの問題があります。ビューは、発砲したときにすぐにアイテムを一番下に配置しないため、それ自体を調整する必要があります。保留中のイベント(ビューの更新など)がなくなるまで待機するため、ソルブ内でrowsInserted呼び出すとこれが解決されます。scrollToBottomQTimer.singleShotQTimer

self.modelモデルがとして保存され、ビューがであると仮定すると、次のself.viewようになります。

self.model.rowsInserted.connect(self.autoScroll)

autoScroll方法:

def autoScroll(self):
    QtCore.QTimer.singleShot(0, self.view.scrollToBottom)

または、これに別の方法を使用したくない場合は、次のようにします。

self.model.rowsInserted.connect(lambda: QtCore.QTimer.singleShot(0, self.view.scrollToBottom))
于 2012-09-30T05:04:57.820 に答える