QPlainTextEdit teilweise readonly machen?

Alles rund um die Programmierung mit Qt
Antworten
oxymoron89
Beiträge: 2
Registriert: 18. November 2010 22:30

QPlainTextEdit teilweise readonly machen?

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

Beitrag von upsala »

Nur eine Idee:
cursorPositionChanged-Signal abfangen und TextInteractionFlags-TextEditable entsprechen setzen/löschen
oxymoron89
Beiträge: 2
Registriert: 18. November 2010 22:30

Beitrag 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
Qt 4.6.2 unter Ubuntu 10.04 64bit
Qt Creator 1.3.1
Antworten