Seite 1 von 1
[gelöst] anzahl der zeilen aus datei
Verfasst: 24. Juni 2007 03:52
von Linuxguru
hallo,
ich lade eine datei in ein QTextEdit ein. hat jemand eine idee, wie ich die anzahl der zeilen raus finden kann?? hab in der doku nix passendes gefunden.
danke
Verfasst: 24. Juni 2007 04:19
von -=Freaky=-
mit qt-bordmittel weiss ich auch nicht, aber das kann man doch per hand machen.
Code: Alles auswählen
int countLines( const QTextEdit &textEdit )
{
int lineCount = 0;
for( int i = 0; i < textEdit.toPlainText().size(); i++ )
if( textEdit.toPlainText().at( i ) == '\n' )
lineCount++;
lineCount++; // letzte Zeile endet nicht auf '\n', wird deshalb in der schleife nicht mitgezählt
return lineCount;
}
....so zum beispiel?
beispiel nicht getestet!
mfg,
julian[/code]
Verfasst: 24. Juni 2007 10:33
von ArneStocker
hallo
ich lade eine datei in ein QTextEdit ein
... was genau verstehst Du unter 'reinladen ' ?
... soweit ich es verstanden habe, arbeitet
QTextEdit nicht mit Zeilen sondern mit 'Absätzen', sogenannten
QTextBlock. Die Anzahl der Absätze bekommst Du raus, in dem du das zu
QTextEdit gehörende
QTextDocument nach der Anzahl der Blockcounts fragst.
Code: Alles auswählen
int absaetze = m_ui->MeinTextEdit->document()->blockCount();
Gruß Arne
Verfasst: 24. Juni 2007 12:17
von Linuxguru
jo das wars.. mit blockCount() bekomme ich exakt die anzahl der zeilen wiedergegeben
danke
Verfasst: 24. Juni 2007 12:48
von upsala
Nein, bekommst du nicht. Mit blockCount() bekommst du die Anzahl der Absätze des Dokuments.
Verfasst: 24. Juni 2007 13:21
von ArneStocker
... nun ja, wenn alle Zeilen mit QTextEdit textedit->append("zeile") einfügt und keine weiteren Spielereien wie Grafiken oder Tabellen einbaut, dann entspricht jeder Absatz genau einer mit LF getrennten Zeile (und somit die Anzahl der Zeilen der Anzahl der Absätze)
Gruß Arne
Frage am Rande: kann man innerhalb eines Absatzes ein böses "\n" setzen (oder ein "<br>") und wird das dann als fester Zeilenumbruch innerhalb eines Absatzes gehandelt ?
Verfasst: 24. Juni 2007 14:20
von upsala
Any ASCII linefeed characters (\n) in the inserted text are transformed into unicode block separators, corresponding to insertBlock() calls.
Ansonsten: Wenn man eine sehr lange Zeile einfügt und das Widget zu klein ist, wird diese als Mehrzeiler dargestellt. Somit hat er zwar einen Block aber auch mehr Zeilen...