QT Window als DLL + in andere Sprache einbinden

Alles rund um die Programmierung mit Qt
Antworten
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

QT Window als DLL + in andere Sprache einbinden

Beitrag von Baz »

Hallo,

ich hab mal eine generelle Frage. Wir möchten ein Programm das momentan in Delphi geschrieben ist, Stück für Stück nach QT portieren. Um das Programm an sich aber weiter nutzen zu können, müssen die in QT programmierten Teile aus dem Hauptprogramm (Delphi) ansprechbar sein. Jetzt wollte ich mal wissen wie das am besten zu lösen ist. Ich muss zugeben, dass ich bisher mit dlls immer so meine liebe Not gehabt habe - irgendwie hab ich nie etwas wirklich Erschöpfendes dazu gefunden (vielleicht lags auch an VS...). Das Headerfile kann ich aus Delphi ja nicht ansprechen, also muss ich einen (mir bekannten dann in Delphi) Einstiegspunkt in der dll anlegen.
Könnte mir jemand mal einfach ein kleines Beispiel mit einem QT Fenster geben, das aus z.B. Delphi aufgerufen werden kann (per dll). Wie ich die dll in Delphi lade weiß ich, es geht mir also nur um den Qt/C++ Teil.

Ich hab diesbezüglich jetzt hier im Forum nichts gefunden, hoffe ich habe keine Thread übersehen :)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ich denke nicht dass man C++ und delphi so einfach mischen kann. Und schon gar nicht in die Richtung Delphi -> Qt da Qt eine eigene Eventloop hat welche nur durch Q(Core)Application verwaltet wird -> Du kannst nicht einfach ein QWidget von Delphi aus aufrufen und hoffen das es geht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Baz
Beiträge: 67
Registriert: 22. August 2007 14:21

Beitrag von Baz »

Hm, sowas hatte ich schon befürchtet. Das Delphi C(++) dlls aufruft ist nicht das Problem, aber der Qt Eventloop... Ich müsste es mal umgekehrt probieren, aber es dürfte wohl generell schwierig werden.
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

Dlls haben nen C-Interface
die windows API ist in C
Delphi kann standard C dlls ansprechen ....

es spricht also nix dagegen
Das mit der eventloop geht auch, weil du ueber die api auf die loop der Hauptanwendung drauf kommst, per windows api

du kommst nicht auf die QT event loop, aber die steuert auch nur die loop von windows

Das problem ist nur, das es ne ziemliche fuddelei ist, und du viel per hand machen musst. Und die frage, ob der aufwand für hilfskonstrukte dir was bringt, wenn irgendwann soweiso ganz auf qt umsteigst ....

Brauchst halt viel Wissen ueber die winapi und windows fenster und schleifen soweiso. Und deine Dll schnittstellen und die art wie kommuniziert wird, wird alles andere als intuitiv.

Ciao ...
Antworten