Helvete
Anmeldungsdatum: 1. Januar 2011
Beiträge: 1
|
Hallo, habe mir vor 2 tagen Ubuntu installiert. (finde es super ☺ )
Da ich unter Windows mit der Win32 Api schon gearbeitet habe, wollte ich fragen ob es auch eine Schnittstelle für Ubuntu gibt? Die Foren suche habe ich schon benutzt und habe keine direkte Antwort auf meine Frage bekommen.
Von eine Kumpel habe ich schonmal gehört das es unter Ubunut einfacher sein soll mit C eine GUI zu machen. Mit Freundlichen Grüßen
Helvete
|
Yoschi
Anmeldungsdatum: 11. April 2009
Beiträge: 454
|
Hallo Helvete und willkommen im Forum ! Unter Ubuntu wirst du mit C warscheinlich GTK+ verwenden wollen. GTK ist das Toolkit, auf dem unter anderem Gnome und somit fast dein gesamter Desktop basiert. Gtk ist insofern "einfacher", dass man ganz normales C schreiben muss und sich nicht mit windowsspezifischen Sachen wie die WinMain Funktion rumschlagen muss. Das "Hello, World" Programm sieht dann so aus:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #include <gtk/gtk.h> /* GTK einbinden */
int main( int argc, char *argv[]) /* Normale main Funktion */
{
GtkWidget *window, *label; /* Das Fensterobjekt - Ja, GTK ist objektorientiert */
gtk_init(&argc, &argv); /* gtk system starten */
window = gtk_window_new(GTK_WINDOW_TOPLEVEL); /* Toplevel Window erstellen */
label = gtk_label_new("Hallo, Welt"); /* Das Static Widget fuer Text in GTK */
/* Gtk arbeitet ausschliesslich mit Sizern anstatt pixelgenauer Positionierung.
Ein GtkWindow ist ein Container, der genau ein Kind haben kann (GtkBin).
Der kann aber wieder ein Container wie GtkVBox, GtkTable, etc sein. */
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show_all(window); /* Das Fenster und alle Kindobjekte anzeigen */
gtk_main(); /* Den Event Loop starten */
return 0;
}
|
Hier gibt es ein englisches Tutorial dazu. Yoschi
|
deadtronic
Anmeldungsdatum: 18. Februar 2010
Beiträge: 762
|
Es gibt sogar eine Menge, wobei GTK+ (Gnome) und Qt (KDE) die gebräuchlichsten sind. Schau doch mal unter GUI-Toolkits. Anmerkung: Qt ist mit C anscheinend weniger gut möglich. Da du ja Gnome verwendest, bietet sich wohl Gtk an, dieses lässt sich nativ in C einbinden.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Hi Helvete, erstmal willkommen hier auf dem Forum ! Das Interface zu Linux besteht aus C-Funktionen, und die stehen (wie alle Basics) in den man- pages. (→ http://wiki.ubuntuusers.de/man ) Konkret stehen die Interfaces dort in Sektion 2 ("System Calls" → http://linux.die.net/man/2/ ) und in Sektion 3 ("Library Functions" → http://linux.die.net/man/3/ ). Für die graphische Programmierung arbeitet man allerdings praktischweise mit einem graphischen Toolkit: http://wiki.ubuntuusers.de/GUI-Toolkits (dazu findest Du über die Suchfunktion Mengen von Diskussionen hier auf dem Forum. Das wäre ein guter Ansatz zur Orientierung) LG, track edit: oha, da waren gleich 2 Leute schneller als ich ... 😉
|
jerik
Anmeldungsdatum: 19. August 2006
Beiträge: 425
|
Helvete
Band oder Schwedisch?
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Man sollte aber auch noch Glade erwähnen, das afair auch Funktionen zum dynamischen Erzeugen von GUIs aus den erstellten GUI-Dateien bietet. Zudem noch die Anmerkung, dass man heutzutage C für GUIs nicht mehr unbedingt einsetzen muss ☺ Da gibt es komfortablere Sprachen.
|
opentarek
Anmeldungsdatum: 1. Dezember 2010
Beiträge: 34
|
Mach eine GUI lieber mit Java .
|
opentarek
Anmeldungsdatum: 1. Dezember 2010
Beiträge: 34
|
Schreib dir lieber eine GUI mit Java oder C# .
|
Panke
Anmeldungsdatum: 14. Oktober 2010
Beiträge: 133
|
opentarek schrieb: Schreib dir lieber eine GUI mit Java oder C# .
Wo genau siehst Du die Vorteile gegenüber der Lösung mit Qt/C++ (oder Qt/<language> oder eben Gtkmm/C++)?
Was genau bietet Java / C# was das native Aussehen und bessere Integration der letzgenannten aufwiegt? Meine Erfahrung zumindest mit Swing ist, dass es jedenfalls nicht mehr Spaß macht als Qt. Eher im Gegenteil,
das Signal/Slot-Konzept habe ich konstant vermisst.
|
Lysander
Anmeldungsdatum: 30. Juli 2008
Beiträge: 2669
Wohnort: Hamburg
|
Panke schrieb: Meine Erfahrung zumindest mit Swing ist, dass es jedenfalls nicht mehr Spaß macht als Qt. Eher im Gegenteil,
das Signal/Slot-Konzept habe ich konstant vermisst.
Man kann dank QtJambi auch Qt mit Java verwenden. Das war das erste Mal, dass sich das Entwickeln einer GUI unter Java gut angefühlt hat! Ansonsten ist so ein Kommentar von opentarek natürlich eher ausdrucksschwach. Man kann leicht zig Beispiele für Sprachen geben, die sich im Zusammenhang mit GUI-Programmierung besser eignen als C. Darum ging es hier ja nicht; ich wollte dem OP lediglich darauf hinweisen, dass C dafür nicht die optimale Wahl ist. Letztlich kann er dafür einen speziellen Grund haben, den wir nicht kennen, oder eben er wußte es nicht besser.
|
garth11
Anmeldungsdatum: 8. Januar 2011
Beiträge: 2
|
Hallo zusammen, ich bin auch erst vor einer Woche auf Ubuntu umgestiegen und es gefällt mir sehr gut. Ich habe nun auch eine Frage zu GTK+, die sicher schnell beantwortet werden kann: Wir programmieren in der Uni C und ich wollte mich auch einmal mit einem grafischen Toolkit auseinandersetzen. Da bin ich auf GTK+ gestoßen. Ich frage mich nun jedoch, ob das nicht schon vorinstalliert ist, oder ob ich da noch etwas einrichten muss. Synaptic sagt mir, libgtk2.0-0 sei installiert. An anderer Stelle habe ich gelesen, wenn man gtk-demo ausführen würde, wäre dass ein Zeichen für eine funktionierende Installation. Jetzt habe ich mir ein einfaches Programm geschrieben, dass ein Fenster öffnet, jedoch bekomme ich folgenden Fehler: | gcc -o fenster fenster.c 'pkg-config --libs --cflags gtk+-2.0'
gcc: pkg-config --libs --cflags gtk+-2.0: Datei oder Verzeichnis nicht gefunden
fenster.c:1: fatal error: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden
compilation terminated.
|
Ich finde nicht mal die Header-Datei gtk.h wenn ich das Dateisystem durchsuche. Kann mir da jemand weiterhelfen??
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Hi garth11, erstmal willkommen auf dem Forum ! Schau mal im hiesigen Wiki: http://wiki.ubuntuusers.de/Baustelle/Wiki/GTK (später: http://wiki.ubuntuusers.de/Wiki/GTK ) Dir fehlen also noch die Header (sprich: *-dev - Paket) ... fenster.c:1: fatal error: gtk/gtk.h: Datei oder Verzeichnis nicht gefunden
LG, track
|
garth11
Anmeldungsdatum: 8. Januar 2011
Beiträge: 2
|
Ah super, danke für die schnelle Antwort. Ich habe das Developer-Paket noch installiert, es muss aber auch an dem von mir eingegebenen Befehl liegen. Es läuft jedoch mit dem im Wiki unten erwähnten Befehl. | gcc -Wall -g fenster.c -o fenster `pkg-config --cflags --libs gtk+-2.0`
|
besten Dank!
|
vinho
Anmeldungsdatum: 10. September 2010
Beiträge: 91
|
garth11 schrieb: Ah super, danke für die schnelle Antwort. Ich habe das Developer-Paket noch installiert, es muss aber auch an dem von mir eingegebenen Befehl liegen. Es läuft jedoch mit dem im Wiki unten erwähnten Befehl. | gcc -Wall -g fenster.c -o fenster `pkg-config --cflags --libs gtk+-2.0`
|
besten Dank!
In deinem vorherigen Befehl hattest du einfache Hochkommata verwendet, es müssen aber Backticks sein, wie hier.
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
Wohnort: Wolfen (S-A)
|
Oder gleich richtig "$( ... )":
gcc -Wall -g fenster.c -o fenster $(pkg-config --cflags --libs gtk+-2.0)
- die "Backticks" (``) gelten nicht ohne Grund als veraltet ... LG, track
|