Textedit im Ct-Creator (bookmarks)

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
aminor
Beiträge: 9
Registriert: 18. Juli 2011 11:21

Textedit im Ct-Creator (bookmarks)

Beitrag von aminor »

Hey Leute,

ich wollte zum Einstieg in C++ und Qt einen kleinen Texteditor schreiben, wie es schon 1000 Beispiele
zuvor gibt. Allerdings habe ich ein kleines Problem.
Ich würde gerne eine Bookmarks funktion einfügen, in der der Benutzer eine Zeile auswählt und diese dann bookmarken kann.
Diese wird dann in ein ListWidget gespeichert und der Benutzer kann dann je nach Wunsch ein Bookmark auswählen und so schneller
zu seiner gewünschten Textpassage gelangen.
Nun habe ich die Frage, ob es überhaupt möglich ist die aktuelle Zeile des Cursors ausfindig zu machen und diese dann zu speichern?

Mfg Aminor
Exasperation
Beiträge: 186
Registriert: 11. März 2009 18:00
Wohnort: VS

Re: Textedit im Ct-Creator (bookmarks)

Beitrag von Exasperation »

Jap, das geht. Du benutzt wahrscheinlich ein QTextEdit oder QPlainTextEdit. Dort bekommst du über textCursor() eine Kopie des Cursors des Editors zurück, und der hat dann einige nette Funktionen, wie in der Doku nachzulesen ist.

Hier mal ein kleines Beispiel:

Code: Alles auswählen

QTextCursor cursor = my_text_edit->textCursor();

QString cur_line_text   = cursor.block().text().trimmed();

int cur_line_number = cursor.blockNumber();

int cur_line_column = cursor.columnNumber();
aminor
Beiträge: 9
Registriert: 18. Juli 2011 11:21

Re: Textedit im Ct-Creator (bookmarks)

Beitrag von aminor »

Hey vielen Dank für die schnelle ANtwort und es funktioniert auch alles soweit.
Jetzt habe ich allerdings eine weitere Frage:
Wenn ich die Bookmarks gesetzt habe und der Benutzer verändert was im Textedit und es nimmt einfluss auf die Bookmark-Zeile,
das heißt die Zeile verrutscht nach Einfügen einer weiteren Zeile im Text nach unten, oder der Inhalt der Zeile die gebookmarked wurde
wird gelöscht. Wie frage ich das am besten ab?
Ich hatte die Idee den Inhalt des Textedits in einem Feld zu speichern und bei jedem Verändern des Contents, die beiden INhalte zu vergleichen
und zu schauen ob das die Bookmarkzeile Tangiert und dann den Bookmark dementsprechend zu ändern.
Dies würde funktionieren, jedoch stellt sich für mich die frage ob das eine elegante Lösung ist.
Meine Frage also: würde sich eine andere Lösung besser anbieten?
Antworten