ich schreibe ein Programm, welches es ermöglicht, verschiedene Geräte (die an den Computer angeschlossen werden können) zu konfigurieren etc. Als Beispiel nehme ich hier mal Mikrokontroller.
Es gibt also einen Ordner "MCPlugins" in dem wiederum für jeden Mikrokontroller ein Unterordner ist. In diesem Ordner befinden sich Konfigurationsdateien und eine GUI, welche dem Benutzer erlaubt gerätspezifische Einstellungen vorzunehmen (d.h. jede GUI sieht hier anders aus, und es kann nicht immer die gleiche verwendet werden!!!).
Ich hatte mir das so vorgestellt, dass die Auswahl durch eine QComboBox stattfindet und dann durch Klicken eines QPushButton die passende GUI geladen wird. Damit man später einfacher neue Geräte integrieren kann, wollte ich die GUIs immer gleich nennen, und sie nur aus unterschiedlichen Ordnern laden lassen. Bis jetzt werden mir die verschiedenen GUIs auch angezeigt, allerdings reagieren sie nicht auf die zugehörigen Slots (als ob er die .cpp Dateien nicht mit lädt). Gelöst habe ich das ganze mit dem QUiLoader:
Code: Alles auswählen
QUiLoader loader;
QComboBox cB_selSco; //ComboBox
QString selected_scope;
/* 'path' enthält den Pfad des Plugins-Ordners */
/* Wenn Pfad existiert, lade UI */
if(dir.exists(path)){
QFile file(path_scopeplugin);
file.open(QIODevice::ReadOnly);
QWidget *ui_widget = loader.load(&file, NULL);
file.close();
ui_widget->show();
}
Ich arbeite übrigens auf Windows XP und Qt Creator 1.3.1, basiered auf Qt 4.6.2.
Danke,
Cabo
edit:
Vielen Dank, ich habe das Problem nun einfach durch Vererbung gelöst.