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) :lol:


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...