Re: Change background color when mouse over



Germán Diago wrote:
Hello. I'm implementing a custom widget, which is a Gtk::VBox and
contains a Gtk::Image and a label.

I want the widget to change color when the mouse goes over it (I just
want to change the VBox zone)
Looking at the documentation I found a way to change the color for
Gtk::VBox with a Gtk::EventBox, but
I don't know how to color it just when the mouse goes over it.

Any help, please?


You'll probably have to connect a slot to the Gtk::Widget::signal_{enter,leave}_notify_event() signals (see Gtk::Widget docs). See the book's signal chapter ( http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/sec-signals-overview.html) to understand signals and the section on popup menus (http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/sec-menus-popup.html) to see a sample handler definition that works with Gdk events.

Here is the code:

class PhotoTile : public Gtk::VBox
{
	private:
		Gtk::VBox box_;
		Gtk::Image image_;
		Gtk::Label label_;
		Gtk::EventBox evtbox_;

		std::string imagename_;

	public:

		PhotoTile()
		{
			box_.set_spacing(12);
			box_.set_border_width(12);
			evtbox_.add(box_);

			
			evtbox_.modify_bg(Gtk::STATE_NORMAL, Gdk::Color("blue"));
		}

		void setImage(const std::string & imagepath)
		{
			image_.set(imagepath);
			box_.pack_start(image_, false, false);
			
			imagename_ = std::string(Glib::path_get_basename(imagepath), 0,
			Glib::path_get_basename(imagepath).find_last_of('.'));
			
			label_.set_text("<b>" + imagename_ + "</b>");
			label_.set_use_markup(true);
			
			box_.pack_start(label_, false, false);

			pack_start(evtbox_, false, false);
			show_all();
		}
};

And thanks for your time.
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list



--
José Alburquerque
jaalburquerque cox net



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]