通过打开文件按钮,选择文件,在lineEdit上显示路径,在textEdit上显示内容。
ui界面如下:
在构造函数中:
connect(ui->pushButton,&QPushButton::clicked,[=](){
//读取文件的名字
QString filename = QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("打开文件"),"E:\1-Project");
//把文件名放到lineEdit中显示
ui->lineEdit->setText(filename);
//文件打开
QFile file(filename);
//设置打开模式——只读模式
file.open(QIODevice::ReadOnly);
//将文件中所有的东西读出来,file.readAll()的返回值是QByteArray
QByteArray array=file.readAll();
//转换格式,将文字格式转换为gbk
QTextCodec * codec = QTextCodec::codecForName("gbk");
//将QByteArray里的内容写到text里
ui->textEdit->setText(codec->toUnicode(array));
file.close();//文件关闭
});
第一种读取方式是readAll
第二种方式是按行读,通过atEnd()来判断是不是读到最后一行。
connect(ui->pushButton,&QPushButton::clicked,[=](){
//读取文件的名字
QString filename = QFileDialog::getOpenFileName(this,QString::fromLocal8Bit("打开文件"),"E:\1-Project");
//把文件名放到lineEdit中显示
ui->lineEdit->setText(filename);
//文件打开
QFile file(filename);
//设置打开模式——只读模式
file.open(QIODevice::ReadOnly);
//将文件中所有的东西读出来,file.readAll()的返回值是QByteArray
// QByteArray array=file.readAll();
QByteArray array ;
while(!file.atEnd())
{
array+= file.readLine();
}
//转换格式,将文字格式转换为gbk
QTextCodec * codec = QTextCodec::codecForName("gbk");
//将QByteArray里的内容写到text里
ui->textEdit->setText(codec->toUnicode(array));
file.close();//文件关闭
});
对文件进行写入
file.open(QIODevice::Append);
file.write("123")
file.close();
乱码原因是gbk与utf-8之间的转换。