ubuntuusers.de

[C++] Programm mit .glade-GUI verbinden

Status: Gelöst | Ubuntu-Version: Ubuntu 9.04 (Jaunty Jackalope)
Antworten |

scrawl

Anmeldungsdatum:
12. Dezember 2007

Beiträge: 1779

So:

glade_xml_get_widget (xml, "name_des_entry_widgets_wie_du_ihn_in_der_glade_datei_angegeben_hast")

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Ich denke mal, da kann diese get_widget Funktion wieder nützlich sein:

1
const char *inhalt = (char*) gtk_entry_get_text ((GtkEntry*) glade_xml_get_widget (xml, "edInput"));

(Die get_text_entry Funktion gibt eingendlich const gchar* zurück, deshalb mal da cast, wenn du mit gchar arbeiten willst, kannst du natürlich auch das nehmen)

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

ich zitiere einfach mal 😛

1
2
3
4
5
6
7
void on_btnDice_clicked()
{
    GtkWidget *myInput;
    myInput = glade_xml_get_widget (xml, "edtInput");
    const char *inhalt = (char*) gtk_entry_get_text ((GtkEntry*) glade_xml_get_widget (xml, "edtInput"));
    cout << inhalt << endl;
}
1
(wuerfelspiel:11578): Gtk-CRITICAL **: gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

ändere es mal so:

1
2
3
4

GtkEntry *myInput = glade_xml_get_widget (xml, "edtInput");
const char *inhalt = (char*) gtk_entry_get_text (myInput);
cout << inhalt << endl;

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

1
GtkEntry *myInput = glade_xml_get_widget (xml, "edtInput");

Ergenbnis:

Fehler: »GtkWidget*« kann nicht nach »GtkEntry*« in initialization umgewandelt werden

🤣

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Gibt es eigendlich kein Vernünftiges Tutorial für Gtk??? Langsam regt mich das auf... Bau mal noch einen Cast ein:

1
GtkEntry *myInput = (GtkEntry*) glade_xml_get_widget (xml, "edtInput");

wenn es kein Turtorial gibt, mach mal lieber einen neuen Thread auf, da ich Gtk ja selbst nicht kann und dich so wahrscheinlich mehr Leute errechen können, die Gtk auch beherschen.

MfG
Yoschi

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

Yoschi schrieb:

Gibt es eigendlich kein Vernünftiges Tutorial für Gtk??? Langsam regt mich das auf...

Wenn ich eins gefunden hätte würde ich das ja durcharbeiten. Aber ich bin schon seit heute Früh auf der Suche.

btw der cast lässt den compiler zwar nicht mehr meckern, nen Output kommt trotzdem nicht. Weiterhin

(wuerfelspiel:11578): Gtk-CRITICAL **: gtk_entry_get_text: assertion `GTK_IS_ENTRY (entry)' failed

Sorry 🐸

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Ich hätte auf meiner Lieblingstutorialseite http://zetcode.com/ Tutorials für GTK+ und PyGTK. Mehr kann ich leider auch nicht bieten. Ansonsten bleibt wohl nur der Blick in die GTK Dokumentation, wobei ich daraus allerdings auch nicht schlauer wurde. Und nochmal mein Edit des letzten Beitrags:
wenn es kein Turtorial gibt, mach mal lieber einen neuen Thread auf, da ich Gtk ja selbst nicht kann und dich so wahrscheinlich mehr Leute errechen können, die Gtk auch beherschen.

Welche GTK Version verwendest du denn genau??? Ich habe hier noch eins für GTK+ 2.0

MfG
Yoschi

Glocke

(Themenstarter)
Avatar von Glocke

Anmeldungsdatum:
1. März 2009

Beiträge: 880

Wohnort: Thüringen

Genau in die Gnome Document Library hab ich jetzt reingeguckt und mich durchgewurschtelt:

Allgemeiner formuliert, hier die Lösung

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
/* void für click-event */
void OnButton1_Clicked()
{
    /* Instanz für GTK "Edit"-Feld */
    GtkEntry *edtInput;

    /* Komponente "aus XML holen", typecast vom Widget zur Entry */
    edtInput = (GtkEntry*) glade_xml_get_widget(xml, "Edit1");

    /* GTK Character */
    const gchar *entry_text;

    /* Text aus mittels GTKEntry-Methode aus derselbigen Komponente holen */
    entry_text = gtk_entry_get_text (GTK_ENTRY (edtInput));

    /* Ausgabe in der Konsole */
    printf ("Entry contents: %s\n", entry_text);
}

Ich glaube ich arbeite mich durch das Zeug mal weiter durch und schreib zum Schluss (wenn ich noch motiviert bin) nen kleines Tutorial. Ich finde nur Englischsprachige, wobei die Sprache kein Problem ist. Aber nen muttersprachliges ist immer besser 😛

Nächster Schritt wird sein den Text in 'ner Label-Komponente auszugeben *werkel*

/EDIT: das EIGENTLICHE problem, die GUI ins programm reinzubekommen, haben wir ja hinbekommen. daher ist das problem hier gelöst. wenn ich zur gtk noch fragen habe mach ich nen neues thema auf ☺

DANKÖ 👍

/EDIT2: ja genau die Version und das Tutorial habe ich zuletzt herangezogen.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Wenn Du vernünftig C++ programmieren willst, solltest Du auch die C++-Bindings für gtk (gtkmm) und libglade (libglademm) verwenden.

Antworten |