Seite 1 von 1
Anzeige Zeilennummern bei QTextEdit (Zeilennummerierung)
Verfasst: 2. April 2008 10:46
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
Verfasst: 2. April 2008 11:30
von Christian81
Eine
Forensuche nach Zeilennummern könnte hilfreich sein. Allerdings wohl für Qt4, musst man eben zurückportieren.
Verfasst: 2. April 2008 12:04
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.
Verfasst: 2. April 2008 12:11
von Christian81
Verfasst: 2. April 2008 12:22
von olzzen
jetzt mal ohne quatsch, ich habe definitiv die suchfunktion genutzt aber nichts gefunden. den beitrag haste doch bestimmt gerade erst hinzugezaubert
ok, erster beitrag und schon alle zweifel an meiner intelligenz beseitigt
vielen dank
Verfasst: 2. April 2008 12:27
von Christian81
Ggf. findest Du ja eine bessere Lösung bzw. Du musst es eh an Qt3 anpassen - damit kannst Du Deinen Ruf wiederherstellen

Verfasst: 2. April 2008 12:32
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
Verfasst: 27. April 2008 14:01
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