Qt Applikation mit Plugins

Gast #6162255
Hallo Leute
ich möchte ein etwas grösseres Programm mit Qt erstellen und bin mir 
noch nicht so ganz im Klaren, wie man das richtig/ordentlich macht.
Ich habe ein paar Erfahrungen schon gesammelt mit Qt und Qt Creator, 
aber bisher habe ich immer nur sehr simple Programme gemacht - ein 
einzelnes Fenster, paar Textfelder, ein paar Knöpfe, ...
Jetzt will ich mich mal an einem etwas grösseren Projekt versuchen.
Ich möchte ein GUI haben das ähnlich wie bei einer IDE aufgebaut ist, wo 
unterschiedliche Funktionen in andockbaren Fenstern untergebracht werden 
können.
Und dann wäre es sehr toll, wenn man mit einer Art "Plugin"-System das 
Programm nachträglich erweitern könnte.

Beim ersten Problem weiss ich grundsätzlich, wie man das macht, ABER wie 
löst man den Datenaustausch zu den einzelnen Fenstern elegant? am einen 
Ort muss ich eine Tabelle darstellen, am anderen kommt Text rein, und im 
dritten Fenster soll eine Art Konsole rein kommen, wo man Befehle 
ausführen kann.

Wie muss ich das prinzipiell angehen? gibts da eine Art Framework dafür?
Hobbyprogrammierer schrieb:
> Beim ersten Problem weiss ich grundsätzlich, wie man das macht, ABER wie
> löst man den Datenaustausch zu den einzelnen Fenstern elegant?

Durch Konzepte wie Model-View-Controller und eine möglichst saubere 
Trennung zwischen der Oberfläche und der Funktionalität.

> Wie muss ich das prinzipiell angehen? gibts da eine Art Framework dafür?

https://doc.qt.io/qt-5/plugins-howto.html
Für etwas das "IDE-Like" ist kann man die Docker-Widgets benutzten.
Gibt bei den Beispielprojekten z.B. etwas zum MainWindow.
Drag´n´Drop gibts auch noch.
Am besten ist vielleicht die Zusammenfassung von verfügbaren Widgettypen 
zu lesen, sich die Beispiele an zu schauen und dann zu sortieren, 
welches Konzept für einen passt.
Gast
Rolf M. schrieb:
> Durch Konzepte wie Model-View-Controller und eine möglichst saubere
> Trennung zwischen der Oberfläche und der Funktionalität.

Warum sollte man das trennen wollen? Ist ja nicht so, dass man die GUI 
austauschen will/kann.
Kontrastor schrieb:
> Rolf M. schrieb:
>> Durch Konzepte wie Model-View-Controller und eine möglichst saubere
>> Trennung zwischen der Oberfläche und der Funktionalität.
>
> Warum sollte man das trennen wollen? Ist ja nicht so, dass man die GUI
> austauschen will/kann.

Das gehört zum Model-View-Controller-Konzept. Wenn ich die selben Daten 
auf unterschiedliche Weise darstellen will, tut man sich sehr viel 
leichter und hat mehr Flexibilität, wenn man die Daten und die damit 
möglichen Aktionen von der Darstellung trennt statt alles irgendwie 
zusammenzuwurschteln.
Es ist außerdem ein allgemeiner Grundsatz für die Entwicklung größerer 
Progrmame mit graphischer Oberfläche, weil es einfach ein sabereres 
Design ist, das dabei hilft, später nicht so limitiert zu sein.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.