相关疑难解决方法(0)

在 PyQt5 中,如何使用拖放正确移动 QTableView 中的行

我(只是)希望能够使用QTableView拖放机制来移动现有行。我找到了很多资源(例如,这里这里这里),它们描述了拖放,插入等的某些方面,但我仍在努力使其适合我的情况。

这是我正在寻找的解决方案应该具备的功能:

  • 处理“Qt-free”数据结构,例如元组列表。
  • 对数据结构进行操作。即,当视图中的项目顺序被修改时,应该在数据结构中修改它
  • 标准拖放启用列表的外观和感觉:
    • 选择/移动整行
    • 显示整条线的下降指示器
  • 诸如删除/编辑单元格之类的进一步操作仍然必须是可能的,即不会被拖放方法所触及

本教程展示了一个非常接近我需要的解决方案,但它使用了一个QStandardItemModel而不是QAbstractTableModel对我来说看起来半优化的解决方案,因为我必须基于(我是对的吗?)QStandardItem需要的“镜像”数据结构进行操作。QStandardItemModel

下面附加了代表我当前进度的代码。

目前我看到两种可能的方法:

方法 1:实现QAbstractTableModel并实现所有需要的事件/槽以修改底层数据结构: * 优点:最通用的方法 * 优点:没有冗余数据 * 缺点:我不知道如何获知已完成的拖放操作以及什么索引移到了哪里

在我附加的代码中,我跟踪了我所知道的所有相关方法并打印出所有参数。这是将第 2 行拖到第 3 行时得到的结果

dropMimeData(data: ['application/x-qabstractitemmodeldatalist'], action: 2, row: -1, col: -1, parent: '(row: 2, column: 0, valid: True)')
insertRows(row=-1, count=1, parent=(row: 2, column: 0, valid: True))
setData(index=(row: 0, column: 0, valid: True), value='^line1', role=0)
setData(index=(row: 0, column: …
Run Code Online (Sandbox Code Playgroud)

drag-and-drop pyqt qtableview python-3.x

5
推荐指数
1
解决办法
2392
查看次数

如何在Qt5中启用不赞成使用的功能

我想将Qt4程序移植到Qt5,并且未定义某些功能(例如QHeaderView :: setMoveable),但是我在qheaderview.h文件中看到具有一些魔术定义(QT_DEPRECATED_SINCE),应该可以重新启用它们。为了让QHeaderView :: setMovable重新出现,我该怎么做?我希望重写我的代码,如果有这样的一种方式。

c++ qt

4
推荐指数
1
解决办法
1767
查看次数

标签 统计

c++ ×1

drag-and-drop ×1

pyqt ×1

python-3.x ×1

qt ×1

qtableview ×1