C++ Klassen in einem Qt Projekt u. C++ Projekt nutzen

Alles rund um die Programmierung mit Qt
Antworten
ycronoy
Beiträge: 34
Registriert: 19. Oktober 2012 00:58

C++ Klassen in einem Qt Projekt u. C++ Projekt nutzen

Beitrag von ycronoy »

Hallo liebe Qt-Gemeinde,

ich starte ein neues Projekt. Es besteht aus einer Qt-GUI-Anwendung und einer nackten C++ Server-Anwendung.

So wie es oft in der Programmierung ist, überschneiden sich viele Klassen in der C++-Anwendung und der Qt-Anwendung.
Ich würde diese auch gerne recyceln, allerdings ist das nicht ganz so einfach bzw. es fehlt mir einfach die Erfahrung.
In der Qt-GUI-Anwendung habe ich z. B. QStrings, die ich in der C++ Anwendung nicht zur Verfügung habe.

Wie könnte man das so lösen, dass man die Klassen trotzdem nutzen kann?

MfG
ycronoy

PS: Ich kann mir vorstellen, dass man die Klassen in Pur C++ schreibt und in der Qt-GUI-Anwendung dann castet.
Diesen Lösungsansatz halte ich persönlich für sehr aufwändig ...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: C++ Klassen in einem Qt Projekt u. C++ Projekt nutzen

Beitrag von Christian81 »

Wenn du keine Qt-Klassen im Server zulassen willst, ist die einzige Möglichkeit, Klassen wiederzuverwenden, auch in der Client-Anwendung auf die C++ - Typen wie z.B. std::string zuzugreifen und diese in einen QString zu wandeln.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: C++ Klassen in einem Qt Projekt u. C++ Projekt nutzen

Beitrag von RHBaum »

Im Gegensatz zu Qt3 ist bei Qt 5 eigentlich ganz gut zwischen den Modulen getrennt.
d.h. nur QT GUI Anwendungen brauchen die Abhängigkeit zu den Qt GUI modulen ...
Qt Core und QtNetwork etc gehen komplett ohne GUI Bindings (Xorg und GDI)
Eigentlich wärs damit kein Problem, ne ServerAnwendung mit Qt Core und co zu schreiben ....

Unter windows managst die Installation mangels systembibliotheken eh selbst -> kein problem.
Aber wer will schon Server Anwendungen (Dienste) unter Windows schreiben ?

Unter Linux sieht/sah es problematischer aus.
Dank mangelhaften Packet-management hat man bei Qt4 und bestimmten Distries zumindest, bei der installation von jeglichen QT Packet (egal ob nur core mit oder ohne dev) die komplette GUI mit draufgedrückt bekommen.
Das äusserte sich dann, das bestimmte Serveranwendungen, die auf Qt Core aufbauten, nen kompletten X-Server installieren wollten ... und ohne explizietes eingreifen und verbieten von abhängigkeiten, hat man sich mal schnell nen server zugemüllt.
Beispiel war da mumble sever und sowas ...
Keine Ahnung wie es heutzutage aussieht ....

das das eine Problem.

Das andere ist unabhängig von der Plattform ...
Server anwendungen sind oft hochgradig auf multithreading ausgelegt.
Und multithread optimierung + impliziete optimierung mittels versteckter cow Mechaniken harmonieren ned immer so zusammen.
Langt einen Qt QThread und dessen performance und schaut ned hinter die kulissen, ist alles ok ....
Versucht man aber tiefer zu optimieren und libs wie openMP und co zu verwenden ... dann sind die QT container einfach der Hass ...
Und Qt ohne Container und GUI ???
Für Server Anwendungen gibts einfach besser geeignete libs ...

Also ich würd auch eher in die Richtung gehen, wie Christian81 es vorschlägt ...

Ciao ...
Antworten