从模型跟踪QTableView中的行移动

2024-09-30 01:22:34 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR:如何告知模型视图中行的顺序(以及它是否已更改)

所以我得到了我的模型,它继承了形式QAbstractTableModel,我使用子类QTableView来表示它,在子类中我将垂直标题设置为可移动的,这样我就可以通过抓取表的一侧来用鼠标拖放行。它工作得很好,但我想让我的模型知道行的顺序

我发现了sectionMoved信号,但它只发出一次,即当我将行0移动到1时,我只得到通知,行的0可视索引从0更改为1;我没有得到同样(逻辑)第1行可视索引从1更改为0以适应第一次更改的信息

那么,我应该如何向模型传递有关项目显示顺序的信息呢?或者,我唯一能做的就是在更改发生后(在连接到sectionMoved信号的插槽中)遍历所有行,检查它们的可视索引并将其传递给模型?是否有更好的模式来处理此类案件

我也尝试过重新实现dragEnterEventdropEvent并在drop上调用moveRow,但信号/插槽机制似乎更像qt方式,更易于测试;另外,我并不需要在模型中移动行,我只需要保存它以便下一个程序执行

如果我使用的是基于Qt5.14和Python3.8的pyside2(用于python的Qt);但我认为我的问题更多的是关于一般的Qt方法


Tags: 模型视图信息标题信号顺序鼠标qt

热门问题