首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何通过拖动更改QTableView行的顺序并将更改保存到模型中?

在Qt中,可以通过拖动来更改QTableView的行顺序,并将更改保存到模型中。下面是一个实现这个功能的示例代码:

代码语言:txt
复制
from PyQt5.QtWidgets import QApplication, QTableView, QAbstractItemView, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QStandardItemModel, QStandardItem

class MyTableView(QTableView):
    def __init__(self, parent=None):
        super(MyTableView, self).__init__(parent)
        self.setDragDropMode(QAbstractItemView.InternalMove)
        self.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.setDragEnabled(True)
        self.setAcceptDrops(True)
        self.setDropIndicatorShown(True)

    def dropEvent(self, event):
        super(MyTableView, self).dropEvent(event)
        self.updateModel()

    def updateModel(self):
        model = self.model()
        rows = self.model().rowCount()
        for row in range(rows):
            item = model.item(row)
            item.setText(str(row + 1))
            model.setItem(row, 0, item)

def main():
    app = QApplication([])
    widget = QWidget()
    layout = QVBoxLayout(widget)
    table_view = MyTableView()
    model = QStandardItemModel()
    model.setColumnCount(1)
    model.setRowCount(5)
    for row in range(5):
        item = QStandardItem(str(row + 1))
        model.setItem(row, 0, item)
    table_view.setModel(model)
    layout.addWidget(table_view)
    widget.show()
    app.exec_()

if __name__ == '__main__':
    main()

这个示例代码创建了一个自定义的QTableView,通过设置拖放模式和选择行为,实现了拖动更改行顺序的功能。在dropEvent方法中,当拖放事件发生时,调用updateModel方法更新模型中的行顺序。updateModel方法遍历模型中的每一行,更新行号,并将更新后的行号设置到模型中。

这个示例中使用了PyQt5库来实现,你可以根据自己的需求选择其他的前端开发框架。对于后端开发、软件测试、数据库、服务器运维、云原生、网络通信、网络安全、音视频、多媒体处理、人工智能、物联网、移动开发、存储、区块链、元宇宙等专业知识,你可以根据具体的问题和需求进行深入研究和学习。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券