当前位置:   article > 正文

QT-删除原文件的多行内容

QT-删除原文件的多行内容

实现功能:双击tablewidget中的一行内容,弹出确认对话框并实现删除功能

 在实现这个功能过程中,我遇到了两个问题:

1.怎么读取文件的所有内容?

2.怎么通过点击的方式访问到具体哪些要删除的内容?

在ChatGPT的帮助下解决了问题

不得不说GPT真是个好东西

解决方法如下:

问题1:

1.通过QTextStream读取整个文件的文本内容;

2.用QString读取文本

3.用QStringList接收QStiring的文本,并用QString的.split("\n")识别出文本中的每一行

问题2:

1.用QTableWidget的on_tableWidget_cellDoubleClicked(int row, int column)获取到选中的行row

2.再通过row实现再QStringList中要删除内容的定位

代码如下

  1. void Del::on_tableWidget_cellDoubleClicked(int row, int column)
  2. {
  3. int p = QMessageBox::warning(this, "删除", "确定删除本书籍?", QMessageBox::Yes, QMessageBox::No);
  4. if (p == QMessageBox::Yes)
  5. {
  6. // 读取原始数据
  7. QFile file("./book.txt");
  8. if (!file.open(QIODevice::ReadWrite))
  9. {
  10. qDebug() << "Failed to open file for reading and writing";
  11. return;
  12. }
  13. QTextStream in(&file);
  14. QString stmp = in.readAll();//储存原文件的所有文本内容
  15. file.close();
  16. // 将要删除的行从数据中移除
  17. QStringList lines = stmp.split("\n");
  18. if (row*4 + 3 < lines.size())
  19. {
  20. lines.removeAt((4*row));
  21. lines.removeAt((4*row));
  22. lines.removeAt((4*row));
  23. lines.removeAt((4*row));
  24. stmp = lines.join("\n");
  25. }
  26. else
  27. {
  28. qDebug() << "Invalid row number or insufficient lines to delete";
  29. return;
  30. }
  31. // 将修改后的数据写入文件
  32. QFile writeFile("./book.txt");
  33. if (!writeFile.open(QIODevice::WriteOnly))
  34. {
  35. qDebug() << "Failed to open file for writing";
  36. return;
  37. }
  38. QTextStream wrtStream(&writeFile);
  39. wrtStream << stmp;
  40. writeFile.close();
  41. // 更新表格视图
  42. ui->tableWidget->removeRow(row);
  43. }
  44. }

值得一提的是:

在实现删除这一功能的过程中,我犯了一个低级错误

一开始理解错了删除“book类四个内容",把代码写成了

            lines.removeAt((4*row));
            lines.removeAt((4*row+1));
            lines.removeAt((4*row+2));
            lines.removeAt((4*row+3));

在removeAt的时候其实就已经对lines进行修改了,这样写导致了删除之后的访问越界,出现了这样的报错

通过寻找路径找到了Line:768是.removeAt的内部函数,并用GPT找到了问题所在和解决方案

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/652677
推荐阅读
相关标签
  

闽ICP备14008679号