要在QTableWidget
中使用鼠标滚轮进行平滑滚动,可以通过重新实现wheelEvent
方法来实现
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QMainWindow
from PyQt5.QtCore import Qt
import sys
class SmoothScrollTableWidget(QTableWidget):
def __init__(self, rows, columns, parent=None):
super(SmoothScrollTableWidget, self).__init__(rows, columns, parent)
def wheelEvent(self, event):
# 获取滚轮滚动角度
delta = event.angleDelta().y()
# 计算需要滚动的行数
rows_to_scroll = int(delta / 120)
# 获取当前可见的第一个行索引
current_row = self.rowAt(0)
# 计算新的可见的第一个行索引
new_row = max(0, current_row - rows_to_scroll)
# 滚动到新的可见的第一个行
self.verticalScrollBar().setValue(new_row * self.rowHeight(0))
app = QApplication(sys.argv)
table_widget = SmoothScrollTableWidget(20, 5)
table_widget.show()
for i in range(20):
for j in range(5):
table_widget.setItem(i, j, QTableWidgetItem(f"Cell {i + 1}-{j + 1}"))
sys.exit(app.exec_())
这个例子创建了一个QTableWidget
的子类SmoothScrollTableWidget
,并重新实现了wheelEvent
方法。在wheelEvent
方法中,我们计算鼠标滚轮滚动的角度,并将其转换为需要滚动的行数。然后,我们计算新的可见的第一个行索引,并滚动到该行。
要运行此示例,请确保已安装PyQt5。您可以使用以下命令安装:
pip install PyQt5
将上述代码保存为.py
文件并运行,您将看到一个包含20行5列的QTableWidget
,使用鼠标滚轮进行平滑滚动。
没有搜到相关的文章