2010-04-10 9 views
23

J'ai une vue de table avec trois colonnes; Je viens de passer à écrire dans un fichier texte en utilisant ce codeQt - lecture à partir d'un fichier texte

QFile file("/home/hamad/lesson11.txt"); 
if(!file.open(QIODevice::WriteOnly)) { 
    QMessageBox::information(0,"error",file.errorString()); 
} 
QString dd; 

for(int row=0; row < model->rowCount(); row++) { 
    dd = model->item(row,0)->text() + "," 
       + model->item(row,1)->text() + "," 
       + model->item(row,2)->text(); 

    QTextStream out(&file); 
    out << dd << endl; 
} 

Mais je parvient pas à lire le même fichier, j'ai essayé ce code, mais je ne sais pas où est le problème dans ce

QFile file("/home/hamad/lesson11.txt"); 
QTextStream in(&file); 
QString line = in.readLine(); 
while(!in.atEnd()) { 

    QStringList fields = line.split(","); 

    model->appendRow(fields); 

} 

Une aide s'il vous plaît?

+0

-vous ouvrir à nouveau le fichier comme vous l'avez fait la première fois? Je pense que cela pourrait être votre problème. –

+0

Je ne pouvais pas ouvrir le fichier à partir de Qt; mais je suis sûr que la fonction d'écriture fonctionne parfaitement en ouvrant le fichier txt en utilisant geedit. De l'aide ?? – user289175

+0

mosg a un bon point ci-dessus, mais ma question était pourquoi vous n'appelez pas encore file.open avant d'essayer de lire votre fichier? Vous le faites avant de l'écrire, alors pourquoi ne le feriez-vous pas avant de le lire? Votre code dans le message ne le fait pas. –

Répondre

81

Vous devez remplacer la ligne de chaîne

QString line = in.readLine(); 

dans en:

QFile file("/home/hamad/lesson11.txt"); 
if(!file.open(QIODevice::ReadOnly)) { 
    QMessageBox::information(0, "error", file.errorString()); 
} 

QTextStream in(&file); 

while(!in.atEnd()) { 
    QString line = in.readLine();  
    QStringList fields = line.split(",");  
    model->appendRow(fields);  
} 

file.close(); 
+1

son bogue semblait aussi être qu'il n'appelait pas encore comme vous le faites dans votre code file.open . –

+0

Merci à tous, j'ai besoin de plus d'efforts. il y a une erreur erreur "aucune fonction correspondante pour l'appel à 'QStandardItemModel :: appendRow (QStringList &)'" – user289175

+3

@ user289175: Et encore, vous devez lire Qt docs (par exemple, Assistant Qt). Dans la classe QStandardItemModel, ceci n'est pas un membre QStandardItemModel :: appendRow (QStringList &), mais appendRow (const QList &) & appendRow (QStandardItem *) a. – mosg

Questions connexes