Tlačítko s obrázkem v Gtk

Tlačítko s obrázkem v Gtk
« kdy: 03. 08. 2011, 15:43:47 »
Ahoj,  zkousim psat v Gtk, dle clanku pana Tomáše Veleckeho. Povedlo se mi nacist a zobrazit obrazek a povedlo se mi vytvorit tlacitko s textem, ale ja bych potreboval aby v tlacitku byl obrazek s textem. Tohoto jsem chtel dosahnou pomoci gtk_button_set_image() , ale ani nedari se mi konstrukce, kompilator pise error: cannot convert ‘Gtk::Button’ to ‘GtkButton*’ for argument ‘1’ to ‘void gtk_button_set_image(GtkButton*, GtkWidget*)’ nebo  invalid cast from type ‘Gtk::Button’ to type ‘GTypeInstance*’ . Neite tedy nekdo jak dostat do tlacitka obrazek a text?
Predem dekuji za odpoved
« Poslední změna: 03. 08. 2011, 23:39:55 od Petr Krčmář »


nhx

Re: Tlacitko s obrazkem v Gtk
« Odpověď #1 kdy: 03. 08. 2011, 16:04:00 »
Ahoj,  zkousim psat v Gtk, dle clanku pana Tomáše Veleckeho. Povedlo se mi nacist a zobrazit obrazek a povedlo se mi vytvorit tlacitko s textem, ale ja bych potreboval aby v tlacitku byl obrazek s textem. Tohoto jsem chtel dosahnou pomoci gtk_button_set_image() , ale ani nedari se mi konstrukce, kompilator pise error: cannot convert ‘Gtk::Button’ to ‘GtkButton*’ for argument ‘1’ to ‘void gtk_button_set_image(GtkButton*, GtkWidget*)’ nebo  invalid cast from type ‘Gtk::Button’ to type ‘GTypeInstance*’ . Neite tedy nekdo jak dostat do tlacitka obrazek a text?
Predem dekuji za odpoved

Pro priste by to chtelo ukazku zdrojaku, ale tipuju, ze funkci nepredavas pointer na tlacitko, ale primo strukturu GtkButton hodnotou. Pokud tvuj kod vypada nejak takto:
Kód: [Vybrat]
gtk_button_set_image(button, image);zmen ho na
Kód: [Vybrat]
gtk_button_set_image(&button, image);

Re: Tlacitko s obrazkem v Gtk
« Odpověď #2 kdy: 03. 08. 2011, 16:26:27 »
Cely program je miniplayer k rhythmboxu. Po kliknuti na tlacitko se pres system() "vykona" prikaz rhythmbox-client --neco . Z hlediska funkce, program funguje, ale chtel jsem si tlacitka misto textu "oznacit" bud jen obrazkem, nebo obrazkem a textem. Pomoci "gtk_button_set_image(play, playimage); " jsem si chtel na tlacitko "play" nastavit obrazek "playimage" ale kompilator hodil chybu. Zmenil jsem to tedy na "gtk_button_set_image(GTK_BUTTON(play), GTK_WIDGET(playimage));" coz take nefungovalo.
Po pridani & kompilator odpovi "error: cannot convert ‘Gtk::Button*’ to ‘GtkButton*’ for argument ‘1’ to ‘void gtk_button_set_image(GtkButton*, GtkWidget*)’" . Jen podotknu, ze pokuz chci obrazek zobrazit samostatne, tak to funguje. Problem je jen jak ho dostat do tlacitka.

nhx

Re: Tlacitko s obrazkem v Gtk
« Odpověď #3 kdy: 03. 08. 2011, 16:47:42 »
Cely program je miniplayer k rhythmboxu. Po kliknuti na tlacitko se pres system() "vykona" prikaz rhythmbox-client --neco . Z hlediska funkce, program funguje, ale chtel jsem si tlacitka misto textu "oznacit" bud jen obrazkem, nebo obrazkem a textem. Pomoci "gtk_button_set_image(play, playimage); " jsem si chtel na tlacitko "play" nastavit obrazek "playimage" ale kompilator hodil chybu. Zmenil jsem to tedy na "gtk_button_set_image(GTK_BUTTON(play), GTK_WIDGET(playimage));" coz take nefungovalo.
Po pridani & kompilator odpovi "error: cannot convert ‘Gtk::Button*’ to ‘GtkButton*’ for argument ‘1’ to ‘void gtk_button_set_image(GtkButton*, GtkWidget*)’" . Jen podotknu, ze pokuz chci obrazek zobrazit samostatne, tak to funguje. Problem je jen jak ho dostat do tlacitka.

Aha, ja si nevsiml toho rozlisovaciho operatoru...
Kód: [Vybrat]
gtk_button_set_image(play.gobj(), playimage.gobj());
Ale nevim, proc misto volani gtk funkce nepouzijete metodu z gtkmm, pak by to vypadalo takto:
Kód: [Vybrat]
play.set_image(playimage);

nhx

Re: Tlacitko s obrazkem v Gtk
« Odpověď #4 kdy: 03. 08. 2011, 16:49:21 »


Re: Tlacitko s obrazkem v Gtk
« Odpověď #5 kdy: 03. 08. 2011, 18:54:57 »
Zajimave, obrazek se normalne zobrazi pokud je sam. Pote co jsem zkusil "play.set_image(playimage);" se nic nestalo s tlacitkem, kompilator vsak nehlasil zadnou chybu  :-\. Prilozim tedy zdrojak a obrazky. Pokud by se nasel nekdo, kdo by byl ochoten to zkouknot a pripadne poopravit, byl bych moc vdecny. Dik

nhx

Re: Tlacitko s obrazkem v Gtk
« Odpověď #6 kdy: 04. 08. 2011, 12:30:30 »
Zajimave, obrazek se normalne zobrazi pokud je sam. Pote co jsem zkusil "play.set_image(playimage);" se nic nestalo s tlacitkem, kompilator vsak nehlasil zadnou chybu  :-\. Prilozim tedy zdrojak a obrazky. Pokud by se nasel nekdo, kdo by byl ochoten to zkouknot a pripadne poopravit, byl bych moc vdecny. Dik

Aby se na tlacitkach ukazovaly obrazky, je treba mit v gconfu zapnutou volbu /desktop/gnome/interface/buttons_have_icons.

Re: Tlačítko s obrázkem v Gtk
« Odpověď #7 kdy: 04. 08. 2011, 14:22:47 »
Nhx dik, bylo to v gconfu. Ja jsem se s tim vcera patlal tak 3 hodiny, nekolikrat jsem projel syntaxi, ale nic. Dik moc.