1

私のプログラムでは、いくつかのウィジェットを作成して処理したいくつかのページを作成しようとしています。

ページの 1 つで、ID とユーザー名とパスワードを取得し、それらをファイルに保存したいと考えています。私は問題なく行うことができます。

しかし、別の .cpp ファイルでは、それらのファイルに保存されている情報を使用して、入力したユーザー名とパスワードが正しいかどうかを確認したいと考えています。しかし、すでに作成したファイルを開いて読み取ることはできません。

そのため、既に作成され、テキストが含まれているファイルを開いて使用する方法について、いくつかの助けをいただければ幸いです。

情報を保存するために私がすでに書いたものは次のとおりです。

QFile users_file; // making a file
QString ID= ui->IDlineEdit->text(); // storing what is written in the LineEdit in a QString
QString username= ui->UserlineEdit->text(); 
QString password= ui->PasslineEdit->text();

users_file.setFileName(ID); //the file's name will be the ID
users_file.open(QIODevice::ReadWrite | QIODevice::Text);  
QTextStream users_fileStream(&users_file);  

    users_fileStream.operator <<(ID);
    users_fileStream.operator <<("\n");
    users_fileStream.operator <<(username);
    users_fileStream.operator <<("\n");
    users_fileStream.operator <<(password);
    users_fileStream.operator <<("\n");



//and this is what I've written for opening the files and reading them.
// but i have to mention that this part is in another .cpp different from the
// one that i wrote my previous code in it. 
// i know it doesn't work but that's all i could think of so far.

   int i=1;
   while( i)
    {

           QString username= ui->lineEdit->text();
           QFile myfile;
           myfile.setFileName(username);
           myfile.open(QIODevice::ReadOnly | QIODevice::Text);
           QTextStream files(&myfile);
           QString PassFromFile;

// I've written this part twice because the password is actually the second line on my file.
           PassFromFile=files.readLine();
           PassFromFile=files.readLine();

           if( PassFromFile == ui->lineEdit_2->text())
           {   i=0;
               this->centralWidget()->hide();
               usersPage->show();
           }

}
4

2 に答える 2

0

書き込んだファイルを閉じて、すべてのデータがディスクにフラッシュされることを確認してください。

users_file.close();
于 2013-06-15T10:55:58.877 に答える
0

以下は、ファイルから読み取る方法の本当に基本的な例です。「ファイル IO と Qt」の簡単なグーグルを実行すると、約 100 万の例と、このようなことを行う方法の説明が返されました。幸運を。

QFile file("pathToSomeFile/someFile.txt");
if(!file.open(QIODevice::ReadOnly))
    QMessageBox::information(0, "Error", file.errorString());

QTextStream in(&file);

while(!in.atEnd()) {
    QString line = in.readLine(); 
// Do whatever you want to do with this data here
// We're reading in one line of text from the file at a time  
}

file.close();
于 2013-06-15T23:53:20.467 に答える