下面是一个使用PySide6的示例代码,实现了在TableWidget中拖动表项往上时能够滚动右侧滚动条:

from PySide6.QtWidgets import QWidget, QVBoxLayout, QTableWidget, QTableWidgetItem, QAbstractItemView, QHeaderView, QScrollBar
from PySide6.QtCore import Qt

class MyTableWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()
        self.tableWidget = QTableWidget()
        self.tableWidget.setColumnCount(3)
        self.tableWidget.setRowCount(10)
        self.tableWidget.setHorizontalHeaderLabels(["Column 1", "Column 2", "Column 3"])
        self.tableWidget.verticalHeader().setVisible(False)
        self.tableWidget.setEditTriggers(QAbstractItemView.NoEditTriggers)
        self.tableWidget.setSelectionMode(QAbstractItemView.NoSelection)
        self.tableWidget.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)

        for row in range(10):
            for col in range(3):
                item = QTableWidgetItem(f"Item {row}, {col}")
                self.tableWidget.setItem(row, col, item)

        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.horizontalHeader().setStretchLastSection(True)
        self.tableWidget.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

        layout.addWidget(self.tableWidget)
        self.setLayout(layout)

    def wheelEvent(self, event):
        delta = event.angleDelta().y()
        scrollbar = self.tableWidget.verticalScrollBar()
        current_value = scrollbar.value()
        scrollbar.setValue(current_value - delta)

if __name__ == '__main__':
    import sys
    from PySide6.QtWidgets import QApplication

    app = QApplication(sys.argv)
    tableWidget = MyTableWidget()
    tableWidget.show()
    sys.exit(app.exec())

在这个示例中,我们创建了一个自定义的QWidget,并在其中放置了一个QTableWidget。我们设置了QTableWidget的行数为10,列数为3,并给每个表格项设置了一个文本值。

我们重写了QWidget的wheelEvent方法,当鼠标滚轮事件发生时,我们获取滚轮的滚动方向和滚动距离。然后,我们通过tableWidget的verticalScrollBar()方法获取到垂直滚动条,并根据滚轮滚动距离来调整滚动条的值,从而实现表项往上拖动时能够滚动右侧滚动条。

最后,我们创建了一个QApplication对象,并将MyTableWidget作为主窗口显示出来。

请注意,示例代码中使用了QHeaderView和QScrollBar来调整表格的布局和滚动条的设置。你可以根据自己的需求进行调整

tablewidget怎么实现表项往上拖动能滚动右侧滚动条给下pyside6的示例代码

原文地址: https://www.cveoy.top/t/topic/iKae 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录