Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: farbydos 03. 08. 2011, 15:43:47

Název: Tlačítko s obrázkem v Gtk
Přispěvatel: farbydos 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
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: nhx 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);
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: farbydos 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.
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: nhx 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:
 (http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.html#ac49972018a8ed3392e897cdf9da66391set_image[/url)
Kód: [Vybrat]
play.set_image(playimage);
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: nhx 03. 08. 2011, 16:49:21
Ale nevim, proc misto volani gtk funkce nepouzijete metodu  z gtkmm,  (http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.html#ac49972018a8ed3392e897cdf9da66391set_image[/url)

Omlouvam se za zpraseny odkaz, ma byt http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.html#ac49972018a8ed3392e897cdf9da66391 (http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.html#ac49972018a8ed3392e897cdf9da66391)
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: farbydos 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
Název: Re: Tlacitko s obrazkem v Gtk
Přispěvatel: nhx 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.
Název: Re: Tlačítko s obrázkem v Gtk
Přispěvatel: farbydos 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.