[QT] Inhalt einer Datei in ListView darstellen.
-
Hallo,
ich bin ziemlich neu in Qt und möchte den Inhalt einer Datei in einem ListView darstellen. Mein Code sieht bis jetzt so aus:QString fileName = QFileDialog::getOpenFileName(this,"Open File", "/", "Text Files (*.txt)"); ui->File->setText(fileName.toStdString().c_str()); QFile in(fileName.toStdString().c_str()); in.open(QIODevice::ReadOnly); char buf[200]; int lines = 0; int i = 0; while(!in.atEnd()) { lines++; } QStandardItemModel *model = new QStandardItemModel(1, lines); QStandardItem *item; in.close(); // Wieder an den Anfang der Datei in.open(QIODevice::ReadOnly); while(!in.atEnd()) { in.readLine(buf, 200); item = new QStandardItem(buf); model->setItem(i, 0, item); i++; } ui->ListView1->setModel(model);
Wenn ich dann eine Datei auswähle bleibt ListView1 leer.
Weis jemand was ich ändern muss?Grüße!
-
So ein Bullshit. Vor allem dein String Handling find ich witzig. Du hast einen QString, konvestierst ihn in std::string, dann sogar in einen char array (!!!) und dann übergibst du das einer Methode, die einen QString haben will.
Das Lesen von Dateien geht in Qt viel einfacher, da brauchst du sicher keine char arrays. Mach das mal richtig, dann könnte es vielleicht funktionieren, wobei ich mir nicht ganz vorstellen kann, was du eigentlich willst.
-
Ja kannst du mir mal einen Beispielcode geben? Ich bin ziemlich neu in Qt, eig erst seit 2 tagen. Würde mir sehr weiterhelfen!
Und ich will jede Reihe einer .txt-Datei in einer Reihe von einem ListView darstellen.
-
AM besten du nimmst QTextStream statt QFile direkt (in der Hilfe zu QFile wird auch QTextStream aufgeführt). Denn mit QTextStream kannst eine Zeile der Datei direkt nach QString einlesen.
Und am besten du schaust dir die Doku zu QStandardItemModel nochmal an (http://qt-project.org/doc/qt-4.8/qstandarditemmodel.html).
Denn du hast im Konstruktor was vertauscht.