首先,tableview的数据是
在桌面视图上拖放项目(仅拖放)后,tableview的数据如下所示
但是当我想逐个迭代模型的项目时
码
for(int i = 0; i != rowCount(); ++i){
if(item(row, Fruit)){
return item(row, Fruit)->data(Qt::DisplayRole).value<QString>();
}
}
将数据打印为
预期结果
拖放后如何获得“实际”数字?
我能想到的最简单的解决方案是再创建一个列来存储模型的行号,然后覆盖dropEvent,当用户删除行时更新行号。是否有更简单的方法来执行此操作?
编辑:
如示例所示,我想要的代码结果是&#34;馅饼,苹果,香蕉和#34;但实际结果是&#34;香蕉,馅饼,苹果&#34;
答案 0 :(得分:1)
模型始终在logicalIndex上运行。您需要使用verticalHeader()的visualIndex进行迭代。
for(int i = 0; i < rowCount(); ++i)
{
// i is the logicalIndex
int row = your_table->verticalHeader()->visualIndex(i);
if(item(row, Fruit))
return item(row, Fruit)->data(Qt::DisplayRole).value<QString>();
}