ich bin noch recht neu in der Welt von QT und bin jetzt an ein Problem gestossen, zu dem ich leider bisher keine Lösung finden konnte:
Ich arbeite mit dem QT Designer und wollte die Forms modular aufbauen, d.h. ich füge QWidgets als reine Platzhalter an den Stellen in die Dialoge ein, die dann später mit echtem Inhalt gefüllt werden sollen.
Die "Als Platzhalter definieren .." Funktion des Designers kann ich dafür leider nicht verwenden, da die Klasse, die später tatsächlich den Inhalt füllt, erst zur Laufzeit feststeht bzw. mehrfach wechseln soll.
Mein Ansatz war es, einfach den Pointer auf mein Platzhalter-QWidget mit einem Pointer auf ein Inhalts-Widget zu ersetzen und update(), repaint() aufzurufen, aber leider hatte ich damit kein Glück.
Beispiel:
Ich habe eine Klasse MainWidget, in der zwei QWidgets (widgetLeft, widgetRight) per Designer definiert sind. Ich möchte jetzt zur Laufzeit das widgetRight mit einem ganz anderen Widget ersetzen. Mein Code dazu sah etwa wie folgt aus:
Code: Alles auswählen
pContentWidgetRight = new IrgendeinWidget();
pContentWidgetLeft = new IrgendeinAnderesWidget();
this->ui.widgetRight = pContentWidget;
this->ui.widgetRight->update();
this->ui.widgetRight->repaint();
Wenn ich testweise die Widgets im Konstruktor als Kinder des MainWidgets definiere (mit: new IrgendeinWidget(this) ), dann werden sie übereinander mitten in die Geometrie des MainWidgets gezeichnet.
WidgetContainer wie das StackedWidget etc würde ich gern vermeiden, da ich meine, so einen Lösungsansatz schon einmal lauffähig implementiert zu haben - nur leider nicht mehr weiss, wie
Ich hoffe, jemand kann etwas Licht ins Dunkel bringen.
Gruß,
harbok