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
Anzeige Zeilennummern bei QTextEdit (Zeilennummerierung)
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
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
Wenn du aber nur die Zeilennummern brauchst (und bissl was lernen willst) ist es besser das selber zu versuchen.
Viel Erfolg
Franz
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
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