Gtk+ - GtkWidget i GtkEntry

0

Siema.
Próbuje wpisać tekst do pola typu entry, a o to kod:

wimie = gtk_entry_new();
gtk_entry_set_text(wimie, "tekst");

Niestety wyskakuje błąd:
'Error 1 error C2664: 'void gtk_entry_set_text(GtkEntry *,const gchar *)' : cannot convert argument 1 from 'GtkWidget *' to 'GtkEntry *'
Z dokumentacji wyczytałem że to powinno wyglądać tak:

void
gtk_entry_set_text (GtkEntry *entry,
                    const gchar *text);

"Sets the text in the widget to the given value, replacing the current contents.
Parameters:
entry - a GtkEntry
text - the new text" Źródło: http://developer.gnome.org/gtk3/stable/GtkEntry.html#gtk-entry-set-text

0

Nie znam tej biblioteki, ale chyba musisz po prostu użyć konwersji w dół.

0

Z tego co wyczytałem na necie po wpisaniu: konwersja w dół to chodzi Ci chyba o rzutowanie w dół jednak to jest z programowania obiektowego czego się jeszcze nie uczyłem bo GTK+ nie jest obiektowe, więc to odpada.

1

Z tego wyczytałem, że GtkEntry dziedziczy po GtkWidget:
https://developer.gnome.org/gtk3/stable/GtkEntry.html

Spróbuj po prostu zamiast tego:

gtk_entry_set_text(wimie, "tekst");

wstawić to:

gtk_entry_set_text((GtkEntry*)wimie, "tekst");
0

Próbowałem z tym GtkEntry ale bez nawiasów, teraz działa :) Dzięki.

1

Chwila szukania i masz więcej na te temat: https://developer.gnome.org/gtk-tutorial/2.90/x939.html.
Dodatkowo, z tego co widzę, gtk ma specjalnie makra służące do castowania, więc twoja linijka powinna wyglądać raczej tak:

gtk_entry_set_text(GTK_ENTRY(wimie), "tekst");
0

Tak też działa, jeszcze raz Dziękuję. Temat do zamknięcia.
Edit: Pierwszego się trochę dziwiłem ale 2 sposób jest całkiem podobny do innego kodu więc teraz rozumiem dlaczego tak:

gtk_container_add(GTK_CONTAINER(okno2), kontener);

1 użytkowników online, w tym zalogowanych: 0, gości: 1