在Qt中,可以通过拖动来更改QTableView的行顺序,并将更改保存到模型中。下面是一个实现这个功能的示例代码:
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库来实现,你可以根据自己的需求选择其他的前端开发框架。对于后端开发、软件测试、数据库、服务器运维、云原生、网络通信、网络安全、音视频、多媒体处理、人工智能、物联网、移动开发、存储、区块链、元宇宙等专业知识,你可以根据具体的问题和需求进行深入研究和学习。
领取专属 10元无门槛券
手把手带您无忧上云