【问题标题】:looking for a SIGNAL in tablewidget在 tablewidget 中寻找信号
【发布时间】:2014-04-24 04:10:07
【问题描述】:

QTableWidget 中滚动时是否有任何“滚动释放”信号?

这个想法是,为了显示巨大的表格,让用户上下滚动,当滚动停止时,在窗口中显示可见的行。

窗口中可见的第一行很容易捕获。

我只需要知道如何在滚动停止时捕获事件。

【问题讨论】:

    标签: python scroll pyqt signals qtablewidget


    【解决方案1】:

    您可以捕获鼠标按钮释放,但如果您使用鼠标滚轮滚动表格,则不会出现“滚动释放”,因为您所做的每一个动作都会发出一个信号。 我建议过滤鼠标滚轮,使用户只能在滚动条上使用鼠标左键。 有关重新实现 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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 2012-08-09
    • 2021-05-31
    相关资源
    最近更新 更多