Seite 1 von 1

QPlainTextEdit teilweise readonly machen?

Verfasst: 18. November 2010 22:52
von oxymoron89
Hallo zusammen,

ich versuche gerade einen komfortableren Ersatz für die Windows Eingabeaufforderung zu schreiben.
Als Konsolen-Widget habe ich ein QPlainTextEdit genommen, doch ich habe ein Problem: Der Benutzer soll seine eigenen Eingaben löschen können, jedoch nicht die Ausgaben von Programmen. Ich müsste das Widget also teilweise readonly setzen.
Ich habe versucht, das zu implementieren, indem ich den Beginn des schreibbaren Bereiches speicher (Cursor-Position) und vor dieser Position die keyPressEvents abfange. Das funktioniert aber noch nicht ideal (z.B. kann ich mit ^ Dinge überschreiben, weil diese Taste bei mir aus irgendeinem Grund kein keyPressEvent wirft).

Hat jemand eine elegantere Idee, wie man das lösen könnte? Irgendwelche Tipps?

Danke im Vorraus!

Gruß
Oxy

Verfasst: 19. November 2010 18:53
von upsala
Nur eine Idee:
cursorPositionChanged-Signal abfangen und TextInteractionFlags-TextEditable entsprechen setzen/löschen

Verfasst: 19. November 2010 19:29
von oxymoron89
Upsala du bist guuuut. :D Es funktioniert gut, mit folgendem Aufruf:

Code: Alles auswählen

setTextInteractionFlags( Qt::TextSelectableByMouse | Qt::TextSelectableByKeyboard );
Leider zeigt das QPlainTextEdit aber keinen TextCursor an. Die Doku sagt:
Qt::TextSelectableByKeyboard
Text can be selected with the cursor keys on the keyboard. A text cursor is shown.
Selektieren funktioniert gut (auch mit der Tastatur), aber ich sehe den Cursor nicht... Bin im Moment noch unter Ubuntu, werde das später mal unter Windows XP testen.
Falls jemand weiß woran das liegen kann - immer raus damit. :)

Erstmal danke!

Gruß
Oxymoron