1
私はPython 3.5とPyQt5でプログラムを書いています。私はそこに項目のリストを持っているQTreeWidgetを持っています。私はスクロールバーを隠して、それを垂直方向にスクロールさせたいと思っています。これは私のコードです:ジェスチャーを使ってQTreeWidgetをスクロールする
self.category_tree = QTreeWidget(self.framemain)
self.category_tree.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.category_tree.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.category_tree.setGeometry(QRect(630, 90, 161, 381))
self.category_tree.setLayoutDirection(Qt.RightToLeft)
self.category_tree.setLocale(QLocale(QLocale.Persian, QLocale.Iran))
self.category_tree.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.category_tree.setUniformRowHeights(False)
self.category_tree.setColumnCount(1)
self.category_tree.setObjectName("category_tree")
self.category_tree.headerItem().setText(0, "1")
self.category_tree.setFrameShape(QFrame.NoFrame)
self.category_tree.header().setVisible(False)
self.category_tree.header().setSortIndicatorShown(False)
self.category_tree.setFocusPolicy(Qt.NoFocus)
self.category_tree.verticalScrollBar().setSingleStep(25)
def checkscroll(self,startx,endx):
if (startx - endx) >= 25:
#swipe from right to left
self.category_tree.verticalScrollBar().setSliderPosition(self.category_tree.verticalScrollBar().sliderPosition()+(25))
elif (startx - endx) <= -25:
self.category_tree.verticalScrollBar().setSliderPosition(self.category_tree.verticalScrollBar().sliderPosition()-abs(25))
問題は、私はそれをスクロールさせるためにQTreeWidgetにスワイプするとき、それはビューの末尾または先頭になり、正常にスクロールしないということです。
こんにちはそれに触れることは、突然最後または最初の項目に行くとき、それはまだ任意の違いを確認しないと私がQScrollerを使用すると、リストの終わりに達したときにウィジェット自体をドラッグするという別の問題が発生し、非常に悪い表示になります。 – Nimda
@Nimda私はかなり 'QScroller'が必要なものだと確信しています。 'Qt.TouchGesture'ではなく' Qt.LeftMouseButtonGesture'で試してみることができますか? – ekhumoro
@ニムダ。試してみるために私の更新された答えを見てください( 'QScroller'の有無にかかわらず)。 – ekhumoro