Gtk+ Frage

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Gtk+ Frage

Beitrag von bmario » 26.07.2009 11:46:20

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 :oops:
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
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

brummer
Beiträge: 182
Registriert: 19.02.2007 19:21:23

Re: Gtk+ Frage

Beitrag von brummer » 27.07.2009 12:56:40

ich wollte mich mal ein wenig in Gtk mit C reintasten.
vieleicht kann die GTK+ Documentation einige deiner Fragen beantworten.

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);


Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Gtk+ Frage

Beitrag von bmario » 27.07.2009 13:32:11

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.
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Gtk+ Frage

Beitrag von Spasswolf » 27.07.2009 13:57:40

Eventuell hilft das:
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);
}

Benutzeravatar
bmario
Beiträge: 1257
Registriert: 05.09.2007 12:15:47
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dresden

Re: Gtk+ Frage

Beitrag von bmario » 27.07.2009 20:52:12

naja, immerhin weiß ich jetzt, das es scheinbar keine solche funktion gibt :roll:

danke soweit :)
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Re: Gtk+ Frage

Beitrag von cosmac » 27.07.2009 21:20:01

hi,
bieli hat geschrieben:zudem kommt mir dann die frage auf, wie man das dann mit gladeprojekten macht?
ausgerechnet für glade gibt es so eine Funktion: glade-xml-get-widget()

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.

Benutzeravatar
BeS
Moderator
Beiträge: 3236
Registriert: 17.04.2002 18:30:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Stuttgart
Kontaktdaten:

Re: Gtk+ Frage

Beitrag von BeS » 28.07.2009 11:30:56

Hallo,
bieli hat geschrieben:das ist nicht das problem, das problem ist, woher ich den pointer auf das label bzw. den entry kriege?
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.

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!

Antworten