Seite 1 von 1

doKeyboardAction geht auf QTextEdit nicht

Verfasst: 17. Dezember 2006 20:23
von soulsofpetro
hallo leute,
ich will über einen button den letzten buchstaben der in eine, QTextEdit *Editor; geschrieben wurde löschen.
ich habe in der docu nachgeschaut ob es eine methode gibt und habe das gefunden;

void QTextEdit::doKeyboardAction ( KeyboardAction action );

wenn ich das auf meinen Editor anwende sagt der compiler dass doKeyboardAction kein element von QTextEdit ist.

komischerweise finde ich es in der kompletten memberliste von QTextEdit auch nicht.

weiß jemand wie ich sonst einen buchstaben im texteditor löschen kann über einen button, also ohne die tastatur zu benutzen?
danke

Verfasst: 17. Dezember 2006 20:31
von upsala
doKeyboardAction gab's in Qt3... Beschäftige dich mit QTextCursor. Damit kann man u.a. einzelne Zeichen löschen.

Verfasst: 17. Dezember 2006 21:10
von soulsofpetro

Verfasst: 17. Dezember 2006 21:12
von soulsofpetro
Ich habe mich mit QTextCursor schon beschäftigt, fand es aber umständlich.
sowas wie doKeyboardAction finde ich schon gut.

ich habe es nun so gemacht, wie gesgt es ist umständlich aber es funktioniert.
vielleicht hat ja jemand eine bessere idee:

QTextEditor *textEditor;
QTextDocument *texDoc;
texDoc = textEditor->document();
QTextCursor texCur(texDoc);
if(texCur.movePosition(QTextCursor::End, QTextCursor::MoveAnchor))
texCur.deletePreviousChar();
textEditor->setDocument(texDoc);

ich speichere also den inhalt meines editors in ein document, erzeuge einen cursor, setz ihn ans ende, lösche das vorherige char, und schreibe wieder den inhalt des Documents in meinem texteditor rein.
findet ihr das nicht umständlich?

Verfasst: 17. Dezember 2006 21:30
von upsala
Du hast den Sinn von QTextEdit/QTextDocument noch nicht ganz verstanden...

Dein Code macht im Prinzip das selbe, aber hier hast du das gleiche kürzer:

Code: Alles auswählen

QTextEditor *textEditor; 
QTextCursor texCur(textEditor->document()); 
if (texCur.movePosition(QTextCursor::End)) {
  texCur.deletePreviousChar(); 
}

Verfasst: 17. Dezember 2006 21:32
von soulsofpetro
tja, das passiert eben wenn man sich die nächte mit Qt schlägt.
das sieht viel besser aus,
thanks upsala.