PySide6 表格项向上拖动滚动右侧滚动条 - 示例代码
以下是使用 PySide6 的示例代码,实现了表项往上拖动时能滚动右侧滚动条,并且可以选中表项:
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 创建表格
self.table_widget = QTableWidget()
self.table_widget.setColumnCount(5)
self.table_widget.setRowCount(10)
# 添加表项
for row in range(10):
for col in range(5):
item = QTableWidgetItem(f'Item {row}, {col}')
self.table_widget.setItem(row, col, item)
# 设置布局
layout = QVBoxLayout()
layout.addWidget(self.table_widget)
# 创建主窗口
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
# 设置表格属性
self.table_widget.setVerticalScrollMode(QTableWidget.ScrollPerPixel)
self.table_widget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
self.table_widget.setSelectionMode(QTableWidget.SingleSelection)
def keyPressEvent(self, event):
if event.key() == Qt.Key_Up:
# 获取当前选中的行
current_row = self.table_widget.currentRow()
# 滚动到上一行
self.table_widget.verticalScrollBar().setValue(self.table_widget.verticalScrollBar().value() - self.table_widget.rowHeight(current_row))
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
在这个示例代码中,我们创建了一个 QTableWidget,并设置了 5 列 10 行的表格。然后通过循环添加了表项。接着,我们将 QTableWidget 放入一个 QVBoxLayout 布局中,并将布局设置为主窗口的中心部件。然后,我们设置了表格的一些属性,包括垂直滚动模式为 ScrollPerPixel,垂直滚动条总是可见,以及选择模式为单选。
在主窗口的 keyPressEvent 事件中,我们捕获了按下上箭头键的事件,并获取当前选中的行。然后,我们使用 QScrollBar 的 setValue 方法将表格滚动到上一行的位置。这样,当按下上箭头键时,表格会向上滚动,并且右侧的滚动条会跟随滚动。
原文地址: https://www.cveoy.top/t/topic/qqrg 著作权归作者所有。请勿转载和采集!