我正在使用a QTableView和a QAbstractTableModel,QSortFilterProxyModel以便我可以通过单击表格标题对项目进行排序.我想为用户添加选项,通过拖动来手动对视图中的行进行排序.我不需要能够从/向任何外部应用程序拖放,只需更改列表中的顺序即可.我也不需要更改模型中的数据,我只希望视图中的顺序不同.
我一直在寻找通过的文件,而且好像我要实现mimeTypes,mimeData和dropMimeData,但是这会非常复杂快!我的模型中的一些数据实际上并没有显示在视图中,就像我说的那样我不想改变模型中的数据顺序.有没有办法简单地拖动项目来改变他们的排序(就像标题已经能够做到)没有大量的编码?
UpA*_*dam 10
更新了QT5以删除已弃用的方法
如果你正在使用PyQT所有你需要做的就是这个:
your_tableview.verticalHeader().setSectionsMovable(True)
your_tableview.verticalHeader().setDragEnabled(True)
your_tableview.verticalHeader().setDragDropMode(QAbstractItemView.InternalMove)
Run Code Online (Sandbox Code Playgroud)
horizontalHeader如果你想要那些可重新排列的话,然后冲洗并重复.
你是绝对正确的,你不应该触摸甚至不知道该功能的型号是什么.QSortFilterProxyModel通过在模型本身上正确使用装饰器可以进一步证明这一点.
你看到的关于mimeTypes和所有这些东西的东西是用于从其他windows/applications/desktop/etc拖放不同来源的实际对象,而你当前想要完成的东西不需要它们.
| 归档时间: |
|
| 查看次数: |
6989 次 |
| 最近记录: |