7

我正在使用 aQTableViewQAbstractTableModelaQSortFilterProxyModel以便我可以通过单击表格标题对项目进行排序。我想为用户添加选项,通过拖动它们来手动对视图中的行进行排序。我不需要能够从/向任何外部应用程序拖放,只是为了更改列表中的顺序。我也不需要更改模型中的数据,我只希望视图中的顺序不同。

我一直在查看文档,似乎我必须实现mimeTypes,mimeDatadropMimeData,但这很快就会变得非常复杂!我模型中的一些数据实际上并没有显示在视图中,就像我说的我不想改变模型中数据的顺序。有没有一种方法可以简单地拖动项目来改变它们的排序(就像标题已经能够做的那样)而不需要大量的编码?

4

1 回答 1

11

为 QT5 更新以删除不推荐使用的方法

如果您使用的是 PyQT,您只需满足以下要求:

your_tableview.verticalHeader().setSectionsMovable(True)
your_tableview.verticalHeader().setDragEnabled(True)
your_tableview.verticalHeader().setDragDropMode(QAbstractItemView.InternalMove)

horizontalHeader如果你也想要那些可以重新排列的,然后冲洗并重复。

你是绝对正确的,你不应该接触甚至知道这个功能的模型是什么。这可以通过您在模型本身上正确使用QSortFilterProxyModel装饰器来进一步证明。

您看到的有关 mimeTypes 的内容以及所有这些内容都是用于从其他窗口/应用程序/桌面/等拖放不同来源的实际对象,而不是您当前尝试完成的任务。

于 2013-04-16T19:18:50.067 回答