SpinButton GtkMM

ho creato una GUI con Glade.

poi ho derivato una Gtk::Window

#include <gtkmm/window.h>
#include <gtkmm/builder.h>
#include <gtkmm/spinbutton.h>
#include <iostream>

class DaWindow : public Gtk::Window
{
public:
	DaWindow();
	DaWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& refGlade);

protected:
	Glib::RefPtr<Gtk::Builder> builder;
	Gtk::SpinButton *m_sbB, *m_sbH;
	void on_spinbutton_digits_changed();
};

Per usare gli SpinButton bisogna inizializzarli: range, value, increments (accettano valori di tipo double).
L’ evento del cambio di valore è signal_value_changed().

#include "dawindow.h"

DaWindow::DaWindow(BaseObjectType* cobject,
                   const Glib::RefPtr<Gtk::Builder>& refGlade)
:
	Gtk::Window(cobject), builder(refGlade)
{
	m_sbB = m_sbH = 0;
	builder->get_widget("spinbuttonB", m_sbB);
	builder->get_widget("spinbuttonH", m_sbH);

	m_sbB->set_range(0.0, 100.0);
	m_sbB->set_value(7.0);
	m_sbB->set_increments(0.5, 1.0);

	m_sbH->set_range(0.0, 100.0);
	m_sbH->set_value(13.0);
	m_sbH->set_increments(0.5, 1.0);

	m_sbB->signal_value_changed().connect(sigc::mem_fun(
		*this, &DaWindow::on_spinbutton_digits_changed));
	m_sbH->signal_value_changed()
	.connect(sigc::mem_fun(
		*this, &DaWindow::on_spinbutton_digits_changed));
}

DaWindow::DaWindow()
{
	return;
}

void DaWindow::on_spinbutton_digits_changed()
{
	std::cout << "spin B: " << m_sbB->get_value() << std::endl;
	std::cout << "spin H: " << m_sbH->get_value() << std::endl;
}

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...