Was brauche ich um einen Editor zu entwickeln?



  • Hallo Leute!

    Was genau benötige ich wenn ich einen eigenen kleinen Editor entwickeln möchte? Ist so was relativ schnell machbar oder doch ziemlich aufwendig?
    Geht es mit dem QT Framework?

    Welche Frameworks bzw. Bibliotheken gibt es dazu? Ich möchte die Textverarbeitung nicht von Grund auf entwickeln müssen.

    Was mich wichtig ist es sollte schlank und schnell sein. Und es wäre schön wenn ich dem Editor ein eigenes Theme verpassen kann, also mit eigenen Farben.

    Habt ihr selbst schon mal einen Editor entwickelt und was sind eure Erfahrungen?



  • Klar kann man mit Qt einen Editor schreiben. Der QtCreator ist mit Qt gemacht und in den Beispielen war zumindest mal ein Notepad. QTextEdit und QPlainTextEdit sind Widgets, die den Kern eines einfachen Editors schon fertig implementieren.



  • Was genau verstehst du unter einem Editor?
    Ein Editor wie Notepad++ ist nicht das gleiche wie eine Textverarbeitung wie MS Word, du hast beide Begriffe benutzt.

    Einfach ist sehr relativ. Kommt auf die Rahmenbedingungen drauf an und darauf, was du konkret für Anforderungen hast. Evtl. gibts auch schon fertige Komponenten, die alles können, was du brauchst.



  • Die einfachste Variante ist wohl dir mit einem GUI Framework ein Fensterle zu machen und da das Editor-Widget deiner Wahl reinzuziehen. Kann jetzt MFC sein oder Qt oder wxWidgets oder zig andere.
    Wenn du mit dem was damit geht auskommst, dann geht das sehr schnell und einfach.

    Ansonsten kenne ich noch Scintilla: http://www.scintilla.org/
    Das ist z.B. das Herz von Notepad2. Ist ein recht schnelles Editor-Widget mit einigen coolen Features. Geht allerdings soweit ich weiss nur für "unformatierten" Text. Also alles im selben Font. Farbe und "Style" (italic/bold/...) kann man allerdings pro Zeichen vergeben.



  • Bei Qt ist sowas bei den Examples dabei. Siehe auch
    http://doc.qt.io/qt-5/qtwidgets-richtext-textedit-example.html



  • Danke! Ja ich meine einen Code Editor und keine Textverarbeitung wie Word.

    Die Beispiele mit QT sehen ziemlich gut und übersichtlich aus. Ich glaube ich werde es mal damit angehen.

    Ich bin mit keiner IDE und keinem Editor wirklich zu 100% zufrieden. Irgendwas stört mich immer. Deswegen dachte ich mir "machs besser", zumindest besser für meine Ansprüche.
    Außerdem wäre es auch ein interessantes Projekt um mehr C++ zu lernen.



  • C++User24 schrieb:

    Deswegen dachte ich mir "machs besser", zumindest besser für meine Ansprüche.

    Kannst du probieren, ist aber nicht so einfach. Wir haben in der Arbeit auch so einen Editor, der auf Qt basiert. Den will aber keiner benutzen, weil dem Haufenweise Features fehlen, die Notepad++ usw. mitbringen.



  • Hallo,

    da ich vor ner Woche genau das gemacht habe, kann ich meine Erfahrungen dazu mit Dir teilen:

    Ich habs mit Qt/QtCreator gemacht, weil ich das schon installiert hatte.

    Man findet eigentlich alles was man braucht in den Examples. Wenn Du die IDE installiert hast, kannst du einfach links auf "Welcome" clicken, dann auf "Examples" gehen und suchen nach "Editor". Ansonsten gibt es die auch im Netz.

    Hilfreich waren für mich folgende:
    - Application Example (simple text editor), zeigt dir wie du ein QPlainTextEdit verwenden kannst, um einen einfachen Editor umzusetzten mit open/save/etc.
    - Code Editor Example, zeigt dir wie du Zeilennummern hinzufügen kannst und die aktuelle Zeile farblich hinterlegen, indem du QPlainTextEdit vererbst und deine eigene Editor Klasse entwirfst
    - Syntax Highlighter Example, zeigt dir wie du einfaches Syntaxhighlighting umsetzten kannst.

    Wenn Du möchtest poste ich den GitHub Link zu meinem Code, evtl. findest du dort weitere Anregungen. Ich bin jedoch nicht gerade Stolz darauf und möchte auch keine Selbstwerbung praktizieren 😉

    So könnte es am Ende aussehen: https://i.imgur.com/0mk7YwR.png

    LG

    P.S.: Qt ist gut geeignet wenn Du dein eigenes Theme umsetzten möchtest. Stichwort palette, stylesheet, ...


Anmelden zum Antworten