void MainWindow::on_openbut_clicked()
{
QString fileName = "/home/milk/123.txt";//QFileDialog::getOpenFileName(this);
f.setFileName(fileName);
if (!f.open(QIODevice::ReadOnly | QIODevice::Text))
ui->textEdit->setPlainText("wrong");
QTextStream txtInput(&f);
QStringList liststr;
// liststr = txtInput.readAll().split(" ");
ui->textEdit->setPlainText(txtInput.readAll());
f.close();
}
我想把txt里面五个数据读出来存到字符串列表中,如果注释liststr = txtInput.readAll().split(" ");,那么窗口会显示txt里面的五个数据,但是把注释去掉,窗口便不会显示txt里面的五个数据。为什么呢?
也就是当执行完// liststr = txtInput.readAll().split(" ");这句代码后,文件光标位置已经到达文件末尾了,如果当你再次去读取文件时,就什么也读取不到;解决办法就是需要将文件光标移动到文件开头位置即可!
是使用seek函数。例如,f.seek(0);
1111
QFile的 readAll(),可以理解为已经将文件的数据读完了,你再调用这个函数的时候,已经没有数据可以再读出来了.就像调用readLine不会一直返回相同一行的数据.如果你想处理文件中的数据,可以将读出来的数据缓存起来.具体原因,你可以去了解下c是怎么读取文件内容的,这里不赘述了.