QT文件和流

功能需求:

如果要用QT來寫一個簡單的應用程序,實現將界面上的文本框的內容存儲到指定目錄文件中, 然後再從指定文件讀取出來展示到界面上。

粗略設計的UI界面如圖所示:

大概思路:

輸入名字年齡,點擊write 按鈕,將名字年齡寫入文件,然後點擊read按鈕,讀出剛剛保存的信息,並展示到富文本框中。

完成這個功能需要使用 QFile 頭文件,即要添加引用  

#include <QFile>

如果使用 QDataStream 轉換,則需要引用  

#include <QTextStream>

按鈕 write 的槽事件如下

void MainWindow::on_write_bt_clicked()
{
    QFile outfile("1.txt");//如果文件不存在,則創建該文件。路徑在執行文件的上一級路徑下。
    outfile.open(QFileDevice::WriteOnly);

 
//    //QDataStream
//    QDataStream outStream(&outfile);
////    outStream<<ui->name_edit->text().toLatin1()<<ui->age_edit->text().toLatin1();//寫進去的數據每個前面會有四個byte
//    outStream.writeRawData((ui->name_edit->text()).toLatin1()+(ui->age_edit->text()).toLatin1(),((ui->name_edit->text()).toLatin1()+(ui->age_edit->text()).toLatin1()).size());

 

 
    //QTextStream
    QTextStream outStream(&outfile);
    outStream.setCodec("UTF-8");
    outStream<<ui->name_edit->text()<<ui->age_edit->text();

 

 

 
    //文件流直接寫
//    outfile.write((ui->name_edit->text()).toLatin1()+(ui->age_edit->text()).toLatin1());
//
    outfile.close();
}

 

這個方法中用到了兩種方式,一種是直接對文件進行寫操作,另一種是轉化成流文件(轉換成QDataStream/QTextStream流),說到這個順帶講一下,Qt提供了輔助類簡化文本文件/數據文件的讀寫的兩種流方式:

QTextStream:寫入的數據全部轉換爲可讀文本;

QDataStream:寫入的數據根據類型轉換爲二進制文件

代碼中文件直接操作的write()也好還是轉換成QDataStream 流以後再操作也好,實質上都是要轉換成QByteArray,才能完成寫操作。完成QString到QByteArray轉換的方法比較常用的有toLatin1()、data()兩種。

 

read 按鈕對應的槽事件如下:

void MainWindow::on_read_bt_clicked()
{
    QString str;
    QFile infile("1.txt");
    infile.open(QFileDevice::ReadOnly);

 
//    //QDataStream
//    QDataStream inStream(&infile);
//    QByteArray arry=infile.readAll();
//    ui->read_tb->setText(arry);

 
    QTextStream inStream(&infile);
    QByteArray arry=infile.readAll();
    ui->read_tb->setText(arry);

 

 
    //文件流直接讀取
//    str=infile.readAll();
//    ui->read_tb->setText(str);

 
    infile.close();
}

運行結果如下所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章