• 4453阅读
  • 3回复

[提问]初学者提问,如何读取txt文件内容并输出到文本框 [复制链接]

上一主题 下一主题
离线forkira
 

只看楼主 倒序阅读 楼主  发表于: 2018-05-26
小弟新手上路,QT版本为5.9.5,在学习某博客的代码时,发现无法从txt文件中正确读取内容并输出。请各位前辈指点一下。最好是代码形式,谢谢!
输出结果window.open('http://www.qtcn.org/bbs/attachment/Mon_1805/17_189686_77fc545e347fd9b.png?9');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >
博客代码:
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include <QFile>
  4. #include <QFileDevice>
  5. #include <QTextStream>
  6. MainWindow::MainWindow(QWidget *parent) :
  7.     QMainWindow(parent),
  8.     ui(new Ui::MainWindow)
  9. {
  10.     ui->setupUi(this);
  11. }
  12. MainWindow::~MainWindow()
  13. {
  14.     delete ui;
  15. }
  16. void MainWindow::on_pushButton_clicked()
  17. {
  18.     QString displayString;
  19.     QFile file("text.txt");
  20.     if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
  21.     {
  22.         qDebug()<<"Can't open the file!"<<endl;
  23.     }
  24.     while(!file.atEnd())
  25.     {
  26.         QByteArray line = file.readLine();
  27.         QString str(line);
  28.         qDebug()<< str;
  29.         displayString.append(str);
  30.     }
  31.        ui->textEdit->clear();
  32.        ui->textEdit->setPlainText(displayString);
  33. }
  34. void MainWindow::on_pushButton_2_clicked()
  35. {
  36.     QString displayString;
  37.     QFile file("text.txt");
  38.      if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
  39.          return;
  40.      QTextStream in(&file);
  41.      QString line = in.readLine();
  42.      while (!line.isNull())
  43.      {
  44. //         process_line(line);
  45.          line = in.readLine();
  46.          displayString.append(line);
  47.      }
  48.        ui->textEdit->clear();
  49.        ui->textEdit->setPlainText(displayString);
  50. }
  51. void MainWindow::on_pushButton_3_clicked()
  52. {
  53.      QString displayString;
  54.      QFile file("text.txt");
  55.       if(!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
  56.           qDebug()<<"Can't open the file!"<<endl;
  57.       }
  58.       QTextStream stream(&file);
  59.       QString line_in;
  60.       stream.seek(file.size());//将当前读取文件指针移动到文件末尾
  61.       int count = 0;
  62.       while(count < 10)
  63.       {
  64.           stream << QObject::trUtf8("新建行:") <<++count<<"/n";
  65.       }
  66.       stream.seek(0);//将当前读取文件指针移动到文件开始
  67.       while( !stream.atEnd())
  68.       {
  69.           line_in = stream.readLine();
  70.           displayString.append(line_in);
  71.           qDebug() << line_in;
  72.       }
  73.       ui->textEdit->clear();
  74.       ui->textEdit->setPlainText(displayString);
  75. }

离线dbzhang800

只看该作者 1楼 发表于: 2018-05-28
搞清楚 常用的汉字编码方式,比如GBK、UTF8,UTF16,UTF16-be,UTF16-le 等

代码没什么好说的,就是 字节流和字符串的无数种转换中,选择和你编码一致的

QByteArray  《===》 QString
离线c++程序员

只看该作者 2楼 发表于: 2018-06-27
你可以看看关于file的知识,存储并读取文件内容
离线cycloveu

只看该作者 3楼 发表于: 2018-06-27
txt默认的是gb2312,qt默认的是utf-8,你只需要在读取文件的时候这样:
QString text = QString::fromLocal8bit(file.readALl());
textEdit->setText(text);
ok,就是这么easy
大道至简 悟在天成
快速回复
限100 字节
 
上一个 下一个