pyqtアプリケーションにQTableViewがあります。基になるモデルに行を継続的に追加します。そして、私が欲しいのは、最後の最新の行まで継続的にスクロールするビューです(その動作は「自動スクロール」と呼ばれますか?)。ただし、代わりに、ビューはまったく(自動的に)スクロールせず、その位置に留まります。
この自動スクロール動作を何らかの方法で有効にできますか、それともそれを実現するために何かをコーディングする必要がありますか?
乾杯、ヴォルフガング
pyqtアプリケーションにQTableViewがあります。基になるモデルに行を継続的に追加します。そして、私が欲しいのは、最後の最新の行まで継続的にスクロールするビューです(その動作は「自動スクロール」と呼ばれますか?)。ただし、代わりに、ビューはまったく(自動的に)スクロールせず、その位置に留まります。
この自動スクロール動作を何らかの方法で有効にできますか、それともそれを実現するために何かをコーディングする必要がありますか?
乾杯、ヴォルフガング
デフォルトの自動スクロール機能はありませんが、動作は比較的簡単にできます。rowsInserted
行を挿入/追加すると、モデルが放出されます。その信号に接続して、ビューを呼び出すことができscrollToBottom
ます。
ただし、1つの問題があります。ビューは、発砲したときにすぐにアイテムを一番下に配置しないため、それ自体を調整する必要があります。保留中のイベント(ビューの更新など)がなくなるまで待機するため、ソルブ内でrowsInserted
呼び出すとこれが解決されます。scrollToBottom
QTimer.singleShot
QTimer
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))