QTableWidget删除单元格

如果单元格内有内容,可以使用函数selectedItems() 获取有内容行的一个链表

 QList<QTableWidgetItem *> items =
                ui->qtableWidget->selectedItems(); //选中有内容的行可选择有内容的行

int count = items.count();

 for(int i = 0 ; i < count; i++){            //删除里面有文字
     int row = ui->qtableWidget->row(items.at(i));
     ui->qtableWidget->removeRow(row);
     }

但是使用上面这种方法,无法删除选中的空白单元格。通过查看帮助文档可知

 

点击查看selectedIndexes()函数,如下 

 通过查看文档可知,这是个受保护的虚函数。本文的处理方法是在UI界面提升控件,自己写一个类继承QTableWidget,然后在自己写的从类里面使用public函数返回上面的受保护的虚函数返回的值。

提升UI控件参考这个帖子http://t.csdnimg.cn/BMLwz

下面是我对从类进行的处理

接着对拿到的数据进行处理。拿到的数据是一个一个的单位cell,不是一行一行的row。所以首先将这些cell得到其对应的row,然后把这些row使用哈希表存储。然后再遍历哈希表的键,就得到了我们要删除的row。但是因为删除的过程中QTableWidget的视图是动态变化的(本来有两行,先删除第一行,第二行就动态变成了第一行,所以要先删除第二行,再倒过来删除第一行)

因为我使用的QHash是一个无序的排列,所以这里使用了QLIst的sort函数,将其排序,然后倒过来遍历,在遍历中使用removeRow函数,实现了删除行的功能。

  QModelIndexList modeItems =
                ui->qtableWidget->getList();      //获取选中的空白的行的链表
 QHash <int,int> empty_hash;             //使用哈希表存储,只要键的row值
      for(int i=0; i<modeItems.size();i++)
       {
           empty_hash.insert(modeItems[i].row(),i);
       }
         QList<int> keys = empty_hash.keys();
         std::sort(keys.begin(), keys.end());

         for(int i = keys.size();i != 0; --i){    //删除的时候行在动态变化,从上面反过来删除
            ui->qtableWidget->removeRow(keys[i-1]);
            qDebug() << keys[i-1];
         }
         empty_hash.clear();
         modeItems.clear();

 

相关推荐

  1. VBA删除Excel工作表空白单元、行和列

    2024-03-26 07:18:11       11 阅读
  2. 退删除)键

    2024-03-26 07:18:11       11 阅读
  3. EsayExcel读取合并单元

    2024-03-26 07:18:11       37 阅读
  4. 【Excel】合并复杂单元

    2024-03-26 07:18:11       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 07:18:11       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 07:18:11       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 07:18:11       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 07:18:11       20 阅读

热门阅读

  1. node.js常用的命令

    2024-03-26 07:18:11       16 阅读
  2. ARMd7 作业

    2024-03-26 07:18:11       16 阅读
  3. spring boot中使用spring cache

    2024-03-26 07:18:11       18 阅读
  4. arm iic通信

    2024-03-26 07:18:11       20 阅读
  5. GPT-4:下一代人工智能的突破与挑战

    2024-03-26 07:18:11       20 阅读
  6. 使用GPT将文档生成问答对

    2024-03-26 07:18:11       16 阅读
  7. Spring和spring Boot的区别

    2024-03-26 07:18:11       13 阅读