Hi,
ich wollte mich mal ein wenig in Gtk mit C reintasten.
da wollte ich einen einfachen rechner erstellen.
mit 2 entrybox und einem label.
ich hab also eine main funktion,
wo das gtk und so alles erstellt wird, und entsprechend gepackt.
dann die signals, (mit onchange jeweils auf die zwei entryboxen).
und dann halt die 2 evenhandler.
nun ist mein problem, wie erhalte ich von dem eventhandler (z.b. für on_change event vom entry1)
zugriff auf das label, wo das ergebnis reinsoll und auf die andere entrybox?
gibt es sowas wie gtk_get_widget_by_name() oder so?
ich hatte irgendwo beim googeln den hinweiß gefunden, über das dritte argument einen pointer auf eine structur zu übergeben,
welche dann die pointer zu dem entry und dem labels enthält, aber irgendwie finde ich das unelegant
zudem kommt mir dann die frage auf, wie man das dann mit gladeprojekten macht?
da hat man ja nie einen pointer auf so ein widget in der hand und kann folglich die nicht per struct übergeben
hoffe ihr versteht mein problem
mfg bieli
Gtk+ Frage
- bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Gtk+ Frage
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
als mit viel Mühe nichts zu schaffen. - Laotse
Re: Gtk+ Frage
vieleicht kann die GTK+ Documentation einige deiner Fragen beantworten.ich wollte mich mal ein wenig in Gtk mit C reintasten.
http://www.gtk.org/documentation.html
Du findest dort die API und einige Beispiele.
concret für deine Frage wärs hier wohl
Code: Alles auswählen
const gchar* gtk_label_get_text (GtkLabel *label);
void gtk_label_set_label (GtkLabel *label,
const gchar *str);
b.z.w.
void gtk_entry_set_text (GtkEntry *entry,
const gchar *text);
const gchar* gtk_entry_get_text (GtkEntry *entry);
- bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Re: Gtk+ Frage
das ist nicht das problem, das problem ist, woher ich den pointer auf das label bzw. den entry kriege?
in der event handler function hab ich ja nur einen zeiger auf das widget, was das event ausgelöst hat.
in der event handler function hab ich ja nur einen zeiger auf das widget, was das event ausgelöst hat.
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
als mit viel Mühe nichts zu schaffen. - Laotse
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: Gtk+ Frage
Eventuell hilft das:
http://library.gnome.org/devel/gtk-tuto ... /x941.html
http://library.gnome.org/devel/gtk-tuto ... /x941.html
Code: Alles auswählen
static void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
printf ("Entry contents: %s\n", entry_text);
}
- bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Re: Gtk+ Frage
naja, immerhin weiß ich jetzt, das es scheinbar keine solche funktion gibt
danke soweit
danke soweit
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
als mit viel Mühe nichts zu schaffen. - Laotse
Re: Gtk+ Frage
hi,
da hat jemand ein widget_find_by_name() geschrieben. Der Name sieht ja schon sehr gut aus, leider gibt's auf den Link nur "connection refused".
ausgerechnet für glade gibt es so eine Funktion: glade-xml-get-widget()bieli hat geschrieben:zudem kommt mir dann die frage auf, wie man das dann mit gladeprojekten macht?
da hat jemand ein widget_find_by_name() geschrieben. Der Name sieht ja schon sehr gut aus, leider gibt's auf den Link nur "connection refused".
Beware of programmers who carry screwdrivers.
- BeS
- Moderator
- Beiträge: 3236
- Registriert: 17.04.2002 18:30:21
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Stuttgart
-
Kontaktdaten:
Re: Gtk+ Frage
Hallo,
Wenn du mit glade arbeitest, dann musst du dir nur einen pointer auf die xml-Definition deiner GUI halten und kannst da dann mit glade-xml-get-widget() einzelne Widgets "rausziehen".
genauso wie bei jeder anderen Variable auch. Wenn du es von Hand geschrieben hast, dann musst du dir einen Pointer irgendwo (z.B. global) halten oder ihn bei Funktionsaufrufen als Parameter übergeben.bieli hat geschrieben:das ist nicht das problem, das problem ist, woher ich den pointer auf das label bzw. den entry kriege?
Wenn du mit glade arbeitest, dann musst du dir nur einen pointer auf die xml-Definition deiner GUI halten und kannst da dann mit glade-xml-get-widget() einzelne Widgets "rausziehen".
Deine Unterstützung für Freie Software kostet dich nur wenige Minuten: www.fsfe.org/support
Ich spreche von Freier Software!
Ich spreche von Freier Software!