PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Windows -> Linux - Und kein Plan *fg*



Miles
17-05-2003, 17:43
Hi Leute. Ich programmiere schon einige Zeit lang mit Windows. Bin jetzt auf Linux umgestiegen. Da hab ich einige Fragen:

Wenn ich in Windows Grafik-Programmierung gemacht hab (also Fenster etc.), dann hab ich entweder die MFC oder die WinAPI benutzt. Wie ist das in Linux?

.) Muss ich da immer für eine Sache (also KDE, Gnome, Gt etc.) programmieren, oder sind diese Programme allgemein?

.) Was für eine API benutze ich da? Ich möchte (wenn es immer nur für eines geht, siehe oben) für KDE programmieren. Gibt es da auch Basis-Funktionen wie die WinAPI? Oder MUSS ich Klassen verwenden?

.) Wo finde ich gute Turtorials für KDE-Programmierung (vorzugsweise für eine funktionsbasierte API)?


Danke für eure Hilfe!
Miles

mehlvogel
17-05-2003, 18:24
Ich muss zugeben das ich da noch net den Überblick habe, aber ich poste mal grad was ich so weis:

Es gibt mehrere API's für die Fenster,amager: gtk, gtk2 und qt. Wobei ich weis das das kde auf qt aufbaut und qt auch cross-platform ist. In qt programmiert man in C++ von daher in Klassen. Und ich meine solche qt Programme sind dann auch allgemein (also gonme, kde, windows). Für die QT programmierung haben wir hier eins im Forum (mal im Mitgliederberiech schauen).

Ausführlich darf wer anders das jetzt beantworten ;)

anda_skoa
17-05-2003, 18:28
Original geschrieben von Miles
Hi Leute. Ich programmiere schon einige Zeit lang mit Windows. Bin jetzt auf Linux umgestiegen. Da hab ich einige Fragen:


Da bist du hier richtig :)



Wenn ich in Windows Grafik-Programmierung gemacht hab (also Fenster etc.), dann hab ich entweder die MFC oder die WinAPI benutzt. Wie ist das in Linux?


Mehr oder weniger genau so. Es gibt C++ Klassenbibliotheken wie MFC (allerdings besser), Bibliotheken für C und eine ziemlich Lowlevel API für GUI, die XLib.

Das sind mal die GUI Teile der WinAPI. Die WinAPI ist ja ein Mischmasch aus GUI API, Betriebsystem API und Plattform API.
Betreibsystem API unter Linux ist mehr oder weniger POSIX und in der glibc implementiert, also wie normale Standard C Funktionen.



.) Muss ich da immer für eine Sache (also KDE, Gnome, Gt etc.) programmieren, oder sind diese Programme allgemein?


Musst du nicht. Du kannst Programme praktisch beliebig allgemein machen, aber natürlich hat auch das "festlegen" gewissen Vorteile.

Desktop Plattform API Sachen wie zentrale Einstellungen sind im Moment nur mit entsprechender GNOME oder KDE Abhängigkeit zu erreichen.

Aber auch ungebundene Programme, die nur die GUI Toolkits benutzen, sind in Ordnung.



.) Was für eine API benutze ich da? Ich möchte (wenn es immer nur für eines geht, siehe oben) für KDE programmieren. Gibt es da auch Basis-Funktionen wie die WinAPI? Oder MUSS ich Klassen verwenden?


Du musst keine Klassen benutzen. Wenn du kein C++ sondern C benutzen willst, dürfte für dich GTK+ die beste Wahl sein.



.) Wo finde ich gute Turtorials für KDE-Programmierung (vorzugsweise für eine funktionsbasierte API)?


KDE Programmierung ist praktisch fast ausschließlich in C++.
Zum Einsteigen könntest du dir unser Qt Tutorial ansehen.
KDE Programmierung ist dann eine Stufe komplexer, wenn man "richtige" KDE Applikationen machen will (die sich zB an gewissen Guidelines von KDE halten)

Es gibt zwar auch C Bindings zu Qt und KDE, also eine C API, aber ich kenn dazu eigentlich keine Dokus.

Ciao,
_

anda_skoa
17-05-2003, 18:30
Original geschrieben von mehlvogel
Für die QT programmierung haben wir hier eins im Forum (mal im Mitgliederberiech schauen).


Nein, hier in diesem Forum ("Umgebungen, Entwicklungstools, Frameworks")
Ist immer am oberen Rand, markiert als "Tip".

Ciao,
_

Miles
17-05-2003, 19:03
Hey, danke! Das hat mir schon ein Stückchen weitergeholfen. :D *freu*
Jetzt hab ich aber noch ein paar Fragen. Und zwar:

Wenn ich es richtig verstanden habe ist Gt sozusagen die klassenbasierte API für KDE.

Aber was ist dann gtk+? Du hast geschrieben, dass es funktionsbasiert ist. Aber wofür? KDE? Allgemein?

Und: Wieso kann ich, wenn Gt sozusagen die API für KDE ist, im KDevelop zwischen KDE- und Gt-Projekt auswählen? - He? Das ist doch irgendwie ein Widerspruch, oder?

anda_skoa
17-05-2003, 19:20
Original geschrieben von Miles
Hey, danke! Das hat mir schon ein Stückchen weitergeholfen. :D *freu*


Freut mich :)



Jetzt hab ich aber noch ein paar Fragen. Und zwar:

Wenn ich es richtig verstanden habe ist Gt sozusagen die klassenbasierte API für KDE.


Qt.
Nein Qt ist eine Klassenbibliothek für GUI Applikationen (ok, man kann auch non-GUI machen).
Qt ist cross-plattform für Unix/X11, Windows, MacOSX und es gibt auch eine Version für embedded Geräte.
Es ist also von KDE unabhängig.

Aber KDE benutzt Qt als Basis und bietet in einigen Bereichen Erweiterungen, die dann in den Bibliotheken von kdelibs enthalten sind.

Du kannst dir das am ehesten als Schichten vorstellen.



Aber was ist dann gtk+? Du hast geschrieben, dass es funktionsbasiert ist. Aber wofür? KDE? Allgemein?


GTK+ ist wie Qt eine ziemlich portable Bibliothek für GUI.
GTK+ ist die Basis des GNOME Desktops, in etwa so wie Qt die Basis von KDE ist.



Und: Wieso kann ich, wenn Gt sozusagen die API für KDE ist, im KDevelop zwischen KDE- und Gt-Projekt auswählen? - He? Das ist doch irgendwie ein Widerspruch, oder?

Siehe oben.
Qt Applikationen benutzen nur Funktionalität der Qt Bibliothek, KDE Applikationen auch Funktionen der KDE Bibliotheken.

Wie gesagt ist das am ehesten über ein Schichtenmodell begreifbar.
Als unterste Schicht steht die C API des Systems.
Dann kommt eine GUI Schicht, die unter Unix meistens ihrerseits auf X11 aufbaut.
Das wäre die Schicht von GTK und Qt

Dann kommt optional eine weitere Schicht, Desktop Plattform.
Das ist die Schicht von GNOME und KDE.

Jede Schicht erhöht die Anzahl der Vorraussetzungen, die vorhanden sein müssen, damit das Programm läuft.
Jede Schicht bietet aber Funktionalität, die die Schicht vorher nicht hatte, benutzt aber ihrerseits meistens Funktionalität der Schicht darunter.

War das halbwegs verständlich?

Ciao,
_

Miles
17-05-2003, 19:46
Von diesen Schichten hab ich schon einmal gehört. Aber da war noch keine Rede von Qt, GTK+ etc.

Heißt das, es gibt auch eine KDE- und Gnome- Library? (Ich nehme mal an, die ist dann auch klassenbasiert. ;-) )

Aber ist das nicht ein Problem, wenn ich jetzt Qt programmier und dabei immer nur KDE laufen hab bei mir? Sieht ein und das selbe Programm dann unter zum Beispiel Gnome nicht ganz anders aus? =P Vielleicht viel schlechter (weil die Proportionen nicht mehr passen)?

anda_skoa
17-05-2003, 19:52
Original geschrieben von Miles
Von diesen Schichten hab ich schon einmal gehört. Aber da war noch keine Rede von Qt, GTK+ etc.


Das war auch mehr als Gedankenstütze gedacht.



Heißt das, es gibt auch eine KDE- und Gnome- Library? (Ich nehme mal an, die ist dann auch klassenbasiert. ;-) )


Ja, diese Libraries gibt es.
KDE ist klassenbasiert, GNOME ist C, also ohne Klassen.



Aber ist das nicht ein Problem, wenn ich jetzt Qt programmier und dabei immer nur KDE laufen hab bei mir? Sieht ein und das selbe Programm dann unter zum Beispiel Gnome nicht ganz anders aus? =P Vielleicht viel schlechter (weil die Proportionen nicht mehr passen)?

Ein Qt Programm sieht immer gleich aus.
Aber man erkennt dann eben auch in KDE, dass es keine KDE Applikation ist, aber der visuelle Unterschied ist nicht so groß wie wenn sie unter GNOME läuft.
Dafür braucht man keine KDE libs.

Ciao,
_