tablewidget怎么实现表项往上拖动能滚动右侧滚动条不能设置QAbstractItemViewNoSelection需要能够选中表项给下pyside6的示例代码
以下是使用PySide6的示例代码,实现了表项往上拖动时能滚动右侧滚动条,并且可以选中表项:
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
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/iKaZ 著作权归作者所有。请勿转载和采集!