Anzeige Zeilennummern bei QTextEdit (Zeilennummerierung)

Alles rund um die Programmierung mit Qt
Antworten
olzzen
Beiträge: 4
Registriert: 2. April 2008 10:04

Anzeige Zeilennummern bei QTextEdit (Zeilennummerierung)

Beitrag von olzzen »

hallo community,

ich brauche einen texteditor, habe mir dazu das qt-beispiel angeschaut. bis dahin kein problem. implementation in qt3.

ich würde nun gerne am linken rand des textedits (QTextEdit) eine zeilennummerierung anzeigen lassen.

wie ist das vorgehen hierzu? hat jemand ein snippet oder kann mit kurzen worten erklären welche klassen dazu benötigt werden?

danke im voraus
olzzen
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Eine Forensuche nach Zeilennummern könnte hilfreich sein. Allerdings wohl für Qt4, musst man eben zurückportieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
olzzen
Beiträge: 4
Registriert: 2. April 2008 10:04

Beitrag von olzzen »

leider liefert die suche keine brauchbaren ergebnisse bezüglich der zeilennummerierung am linken rand (so wie man es von einschlägigen editoren her kennt) eines QTextEdits.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
olzzen
Beiträge: 4
Registriert: 2. April 2008 10:04

Beitrag von olzzen »

jetzt mal ohne quatsch, ich habe definitiv die suchfunktion genutzt aber nichts gefunden. den beitrag haste doch bestimmt gerade erst hinzugezaubert :wink:

ok, erster beitrag und schon alle zweifel an meiner intelligenz beseitigt :oops:

vielen dank
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ggf. findest Du ja eine bessere Lösung bzw. Du musst es eh an Qt3 anpassen - damit kannst Du Deinen Ruf wiederherstellen :wink:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Wenn du faul bist und das nicht selber machen willst, gibt es immer noch QScintilla. Das ist ein komplettes Editor-Widget mit sämtlichem Drumherum, incl. fertigem Syntaxhighlighting für zig Programmiersprachen.

Wenn du aber nur die Zeilennummern brauchst (und bissl was lernen willst) ist es besser das selber zu versuchen.

Viel Erfolg
Franz
olzzen
Beiträge: 4
Registriert: 2. April 2008 10:04

Beitrag von olzzen »

ok, QScintilla ist keine lösung für mich, leider.

sorry, hatte leider keine zeit früher zu posten. habe jetzt folgenden code erstellt, der auch soweit funktioniert, jedoch wird bei sehr großem textinhalt das widget ziehmlich langsam...

void IrgendeinTextEdit::paintEvent( ... )
{
QPainter paint( this );
const QFontMetrics fm( font() );
int fontHeight = fm.height();
int cy = vertivalScrollBar()->value();
int lineCnt = lines();
int lineNumber = 1;

setMargins( fm.width( QString::number( lineCnt ) ), 0, 0, 0 );

QString nr;

for( int i = 0; i < lines; i++, lineNumber++ )
{
nr = QString::number( lineNumber );
paint.drawText( <position x>, <position y> , nr);
}

QTextEdit::paintEvent( ... );
}

... und irgendwann werden die nummern vom anfang wieder mitgezeichnet und das ergibt ein kauderwelsch. habe mal in der qt-doku nachgesehen und das viewport schafft nur 4000px in x bzw y richtung. verstehe nur nicht warum sich qt nicht selber darum kümmern kann. kann doch nicht sein das ich noch weitere funktionen implementieren muss...

oder ist der ansatz so nicht der richtige?

grüsse
Antworten