GTK+ Tutorial

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Antworten
Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

GTK+ Tutorial

Beitrag von Xeon » Mo Jun 08, 2020 2:39 pm

Hallo Tutorial Autoren

Anordnung von GUI-Elementen:
https://www.proggen.org/doku.php?id=gui:gtk:boxes

Einsatz von GTK Boxen:

Code: Alles auswählen

#include <gtk/gtk.h>
 
int main(int argc, char** argv)
{
    GtkWidget *window;
    GtkWidget *vbox;
 
    gtk_init(&argc, &argv);
 
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
    vbox = gtk_vbox_new(FALSE, 0);
    gtk_container_add(GTK_CONTAINER(window), vbox);
 
    gtk_box_pack_start(GTK_BOX(vbox), gtk_label_new("Element 1"), FALSE, FALSE, 0);
    gtk_box_pack_end(GTK_BOX(vbox), gtk_label_new("Element 2"), FALSE, FALSE, 0);
    gtk_box_pack_start(GTK_BOX(vbox), gtk_label_new("Element 3"), FALSE, FALSE, 0);
 
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
    gtk_widget_show_all(window);
 
    gtk_main();
    return 0;
}
Der obige Code ist korrekt, aber weiter unten hat sich ein Tippfehler eingeschlichen:

Code: Alles auswählen

vbox = gtk_vbox_new(0, FALSE);
Die Parameter wurden vertauscht.


Liebe Grüße
von Xeon

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+ Tutorial

Beitrag von Xin » Mo Jun 08, 2020 2:45 pm

Ich weiß nicht, ob das GTK-Tutorial soweit brauchbar ist... da war schon lange keiner mehr dran. Ich habe den Fehler aber rausgeholt.

Da ist man mit Nufans Qt-Tutorial eventuell besser bedient.

Solltest Du da weiter machen, sag mir aber Bescheid, dann gucke ich da mal mit drüber.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Re: GTK+ Tutorial

Beitrag von Xeon » Mo Jun 08, 2020 3:03 pm

Würde ich schon gerne da weiter machen, weil ich nur C kann.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+ Tutorial

Beitrag von Xin » Mo Jun 08, 2020 3:16 pm

Ok, dann stell ggfs. Fragen.

Ich habe jetzt auch schon länger nichts mehr mit GTK gemacht, habe aber derzeit auch ein Projekt, wo ich über GTK nachdenke.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Re: GTK+ Tutorial

Beitrag von Xeon » Mo Jun 08, 2020 3:42 pm

Xin hat geschrieben:
Mo Jun 08, 2020 2:45 pm
Ich weiß nicht, ob das GTK-Tutorial soweit brauchbar ist... da war schon lange keiner mehr dran. Ich habe den Fehler aber rausgeholt.
Wie meinst du das keiner mehr dran war? Kein Autor oder Benutzer?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+ Tutorial

Beitrag von Xin » Mo Jun 08, 2020 3:58 pm

Xeon hat geschrieben:
Mo Jun 08, 2020 3:42 pm
Wie meinst du das keiner mehr dran war? Kein Autor oder Benutzer?
Es gibt keinen aktiven Autor hier. Ergo keiner, der direkt Fragen beantworten kann oder weiterschreibt.

Ich habe mit GTK mal was gemacht, ggfs. übernehme ich das dann. Aber ich hab zu selten Zeit.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

Re: GTK+ Tutorial

Beitrag von Xeon » Di Jun 09, 2020 1:27 pm

Wenn du mich fragst: Das GTK+ Tutorial ist bis jetzt spannend. Da ich kein Englisch kann (arbeite daran), bin ich dankbar, dass es ein Tutorial auf Deutsch gibt.

Xeon
Beiträge: 169
Registriert: So Dez 17, 2017 4:10 pm

GTK+ Tutorial Signale

Beitrag von Xeon » Mi Jun 10, 2020 12:27 pm

Bin jetzt hier angelangt:

https://www.proggen.org/doku.php?id=gui:gtk:signals

Die Callback Funktion:

Weiter oben steht folgender Text:
Mit der Funktion gtk_label_set_text ändern wir hier den Text unseres Labels. Nun interessieren uns aber die Argumente der Funktion. Denn wenn wir uns unsere Signalverknüpfung ansschauen (g_signal_connect), werden dort scheinbar gar keine Argumente übergeben. Also: Woher kommen diese zwei Zeiger?
Habe da anscheinend eine Wissenslücke in C.
Wie kann eine Funktion mal Parameter haben und mal nicht?
Ist es eine Rekursion?

Für eine Antwort bin ich dankbar


Liebe Grüße
Von Xeon

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: GTK+ Tutorial Signale

Beitrag von Xin » Mi Jun 10, 2020 5:30 pm

Xeon hat geschrieben:
Mi Jun 10, 2020 12:27 pm
Wie kann eine Funktion mal Parameter haben und mal nicht?
Die Funktion hat immer zwei Parameter.

Bei der Signal-Funktion wird allerdings nicht die Funktion selbst gerufen - also Parmeter an die Funktion übergeben - sondern die Funktion selbst ist der Parameter. Darum sind da auch keine Klammern:

Code: Alles auswählen

g_signal_connect(button, "clicked", G_CALLBACK(change_label), label);
Die Funktion wird wie eine Variable gehandhabt.

Signal heißt, dass wenn beim Widget button das Event "clicked" eintritt, dann ruft Gtk die Funktion change_label auf. Und diese Funktion, die da gerufen wird, hat 2 Parameter, sonst funktioniert das nicht.
Es kompiliert aber wahrscheinlich und fliegt Dir dann um die Ohren. Weil gtk erwartet eine Funktion mit genau diesen beiden Parametern und wenn Du da was anderes reinsteckst, passiert auch "was anderes".
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten