doKeyboardAction geht auf QTextEdit nicht

Alles rund um die Programmierung mit Qt
Antworten
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

doKeyboardAction geht auf QTextEdit nicht

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

doKeyboardAction gab's in Qt3... Beschäftige dich mit QTextCursor. Damit kann man u.a. einzelne Zeichen löschen.
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Beitrag von soulsofpetro »

Zuletzt geändert von soulsofpetro am 17. Dezember 2006 21:30, insgesamt 1-mal geändert.
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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(); 
}
soulsofpetro
Beiträge: 16
Registriert: 3. Dezember 2006 16:57

Beitrag von soulsofpetro »

tja, das passiert eben wenn man sich die nächte mit Qt schlägt.
das sieht viel besser aus,
thanks upsala.
Antworten