4

QTableWidgetに大量のデータがあり、特定の列にスクロールできるようにしたいと思います。現在、scrollToItem(self.item(0、col))を使用しています。ただし、これにより行が0にハードコードされます。ユーザーが行100を表示して特定の列にスクロールすると、テーブル内の垂直方向の位置が失われるため、問題が発生します。

QTableWidgetが提供するQScrollArea内でユーザーが現在表示している行を見つける方法はありますか?もしそうなら、私はそのデフォルトの行を正しいものに簡単に置き換えることができます。

.ensureWidgetVisible()のようなものでこの結果を達成する別の方法があるかもしれませんか?ただし、スクロールしたり表示したりする正しいウィジェットを取得する方法がわかりません。

4

1 に答える 1

3

これを行う1つの方法は、最初に表示される行の行インデックスを取得し、それを使用して、scollする列の最初の表示項目を見つけることです。

def scrollToColumn(self, column=0):
    visible = self.itemAt(0, 0)
    if visible is not None:
        self.scrollToItem(self.item(visible.row(), column))

スクロール先のアイテムの行はすでに表示されているため、ビューは垂直方向にスクロールしないでください(verticalScrollModeScrollPerPixel表示され、ポイントのアイテム(0, 0)が完全に表示されていない場合を除く)。

于 2012-02-10T23:58:50.500 に答える