QT文件操作-打开并读取文本

一、文本方式读取文件

 void MainWindow::on_pushButton_pressed()
{
    QString curpath=QDir::currentPath();//保存当前路径

    QString dlgTitle="打开一个文件";

    QString filter="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";

    QString afilname=QFileDialog::getOpenFileName(this,dlgTitle,curpath,filter);

    if(afilname.isEmpty())
    {
        return;
    }

    openText(afilname);

}

bool MainWindow::openText(const QString afilname)
{
    QFile aFile(afilname);

    if(!aFile.exists())//如果文件不存在
        return false;

    if(!aFile.open(QIODevice::ReadOnly |QIODevice::Text))//如果不是以只读和文本方式打开文件返回false
        return false;

    ui->textEdit->setPlainText(aFile.readAll());

    aFile.close();

    return true;
}

一、流的方式打开并读取文本

void MainWindow::on_pushButton_3_pressed()
{
    QString curpath=QDir::currentPath();//保存当前路径

    QString dlgTitle="打开一个文件";

    QString filter="程序文件(*.h *.cpp);;文本文件(*.txt);;所有文件(*.*)";

    QString afilname=QFileDialog::getOpenFileName(this,dlgTitle,curpath,filter);

    if(afilname.isEmpty())
    {
        return;
    }

    openStreamText(afilname);

}
/**************流方式打开文件*******************/
bool MainWindow::openStreamText(const QString afilname)
{
    QFile aFile(afilname);

    if(!aFile.exists())//如果文件不存在
        return false;

    if(!aFile.open(QIODevice::ReadOnly |QIODevice::Text))//如果不是以只读和文本方式打开文件返回false
        return false;

    QTextStream aStream(&aFile);//文本流读取文件

    aStream.setAutoDetectUnicode(true);//自动检测unicode便于显示汉字

    ui->textEdit->setPlainText(aStream.readAll());

    aFile.close();

    return true;
}

你可能感兴趣的:(QT)