【发布时间】:2014-04-24 04:10:07
【问题描述】:
在QTableWidget 中滚动时是否有任何“滚动释放”信号?
这个想法是,为了显示巨大的表格,让用户上下滚动,当滚动停止时,在窗口中显示可见的行。
窗口中可见的第一行很容易捕获。
我只需要知道如何在滚动停止时捕获事件。
【问题讨论】:
标签: python scroll pyqt signals qtablewidget
在QTableWidget 中滚动时是否有任何“滚动释放”信号?
这个想法是,为了显示巨大的表格,让用户上下滚动,当滚动停止时,在窗口中显示可见的行。
窗口中可见的第一行很容易捕获。
我只需要知道如何在滚动停止时捕获事件。
【问题讨论】:
标签: python scroll pyqt signals qtablewidget
您可以捕获鼠标按钮释放,但如果您使用鼠标滚轮滚动表格,则不会出现“滚动释放”,因为您所做的每一个动作都会发出一个信号。
我建议过滤鼠标滚轮,使用户只能在滚动条上使用鼠标左键。
有关重新实现 eventFilter 的更多信息,您可以找到 here ,但由于您使用的是 Python,这里是我使用自定义 eventFilter 的示例(为我的 QMainWindow 重新实现)来阻止组合框上的滚轮和鼠标单击在桌子上:
def eventFilter(self,target,event):
if target == self.__ui.comboBox:
if(event.type()== QtCore.QEvent.Wheel):#block wheel on combobox
return True
elif target == self.__ui.tableWidget.viewport():
if(event.type()== QtCore.QEvent.MouseButtonDblClick):#block MouseButtonDblClick in table
return True
if(event.type()== QtCore.QEvent.MouseButtonRelease):#block MouseButtonRelease in table
return True
return False
这是设置过滤器的方法:
self.__ui.comboBox.installEventFilter(self)
self.__ui.tableWidget.viewport().installEventFilter(self)
【讨论】:
self.tableWidget.verticalScrollBar().valueChanged.connect(self.crollStoppedDoSomething)