[gelöst] verschiedene GUI-Dateien mit gleichem Namen laden

Alles rund um die Programmierung mit Qt
Antworten
Cabo
Beiträge: 13
Registriert: 6. Mai 2010 17:10

[gelöst] verschiedene GUI-Dateien mit gleichem Namen laden

Beitrag von Cabo »

Hallo,

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 hoffe mir kann jemand diesbezüglich helfen,oder hat eine andere Idee, wie man dieses Problem lösen kann.

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.
Zuletzt geändert von Cabo am 10. Mai 2010 10:56, insgesamt 2-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: verschiedene GUI-Dateien mit gleichem Namen laden

Beitrag von franzf »

Cabo hat geschrieben: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).
Und wie soll das gehen? .cpp-Dateien werden kompiliert, die kann man nicht plaintext zur Laufzeit laden, wie das vllt. mit python oder JavaScript (also Scriptsprachen) geht. Du musst das ordentlich in eine DLL packen, und die dann laden.
Denn in einem .ui allein steht ja noch kein Code, darin ist nur die Information zum Erstellen der Gui enthalten.
Cabo
Beiträge: 13
Registriert: 6. Mai 2010 17:10

Beitrag von Cabo »

oh mist,... da stand ich ja total auf dem schlauch *peinlich*
vielen dank schon mal!
ich werde das gleich versuchen umzusetzen und melde mich dann noch mal mit eventuellen erfolgen
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Was du suchst klingt stark nach Plugins mit eigener GUI Schnittstelle.

Ist nicht unbedingt nen triviales thema ...

Ciao ....
Cabo
Beiträge: 13
Registriert: 6. Mai 2010 17:10

Beitrag von Cabo »

danke für deine antwort.

muss man bei dieser plugin mit gui schnittstellen sache was besonderes beachten, oder kennst du vielleicht ein gutes tutorial oder sowas in der art? es klingt auf jeden fall so, als könnte ich das gebrauchen wenn die sache mit meiner dll nachher nicht funktioniert oder einfach als gedankenanregung
Antworten