拖放后获取QTableView的实际行号

时间:2015-02-27 12:47:50

标签: c++ qt5

首先,tableview的数据是

  1. 苹果
  2. 香蕉
  3. 在桌面视图上拖放项目(仅拖放)后,tableview的数据如下所示

    1. 香蕉
    2. 苹果
    3. 但是当我想逐个迭代模型的项目时

      for(int i = 0; i != rowCount(); ++i){
          if(item(row, Fruit)){
              return item(row, Fruit)->data(Qt::DisplayRole).value<QString>();
          }        
      }
      

      将数据打印为

      1. 苹果
      2. 香蕉
      3. 预期结果

        1. 香蕉
        2. 苹果
        3. 拖放后如何获得“实际”数字?

          我能想到的最简单的解决方案是再创建一个列来存储模型的行号,然后覆盖dropEvent,当用户删除行时更新行号。是否有更简单的方法来执行此操作?

          编辑:

          Example

          如示例所示,我想要的代码结果是&#34;馅饼,苹果,香蕉和#34;但实际结果是&#34;香蕉,馅饼,苹果&#34;

1 个答案:

答案 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>();     
  }