1. Namensgebung
wenn speter du oder jemand anders mal den code durchschauen muss. wird der sicherlich wahnsinnig ^^
Klasse Interface ??? wenn du spaeter mal nen anderes Interface brauchst, wie heisst das dann ? Interface2 ?
Also nen Brush soll ja normalerweisse was fuellen oder zeichnen... oder so.
das mindeste waere DrawInterface .... oder alternativ IDraw.
oder GraphicItemInterface oder oder ... keine ahnung was die schnittstelle genau beschreibt.
deine Brush-klasse waere dann eher ne Impl, also BrushImpl ...
Ok, ueber Namensyntax laesst sich streiten, aber konsistente aussagekraeftige Namen haben echt was ...
Es scheint schon etwas komplizierter zu sein
2. Plugins sind definitiv nicht trivial ... Also da gehoert scho ne menge an grundlagenwissen dazu ....
Prinzipiell .... dein Mainwindow scheint ne Huelle / Hauptfenster was weiss ich, fuer deine Application zu sein .... Da soltle auch das Plugin nix, aber auch gar nix drueber wissen ....
Fuer alles was dein Plugin ueber die App wissen muss, und wass die App ueber das Plugin wissen muss, sollte es Interfaces, und nur Interfaces fuer geben .....
Geht ned immer .... grad am beispiel von der QT, weil QWidget kein reines Interface ist ....
Trotzdem sollt man abhaengigkeiten so gering wie moeglich halten ....
Irgendwie willst du scheinbar in dem Plugin auf was malen, oder ein neues Fenster / Widget aufmachen, dafuer brauchst das Mainwindow.. ..
Nun schau dir fuer deine Funktionen die im Plugin verwendest, genau an was fuer Typen du vom Paramaeter du Brauchst ?
Mainwindow (ich nehm an deine eigene Impl von QMainWindow) sicher nicht ....
Also maximal QMainWindow .... aber selbst das nur wenn wirklich funktionen auf Mainwindow Ebene brauchst.
Ich vermute fuer dich wuerde QWidget langen ....
Also wenns geht immer so weit runter wie moeglich ... um so weniger das plugin wissen muss, um so besser.
Code: Alles auswählen
class BrushImpl : public IDraw
{
...
void setMainWindow(QWidget *);
...
}
So saehs vielleicht bei mir aus ....
und fuer QWidget brauchts keine impl, da du es eh nur referenzierst, also wuerde in deinem plugin ein
#include <QWidget>
eigentlich langen ....
CIao ...