Botão

5.1.1 Construtores

Existem duas formas de criar um Botão. Você pode especificar um texto de rótulo no construtor Gtk::Button ou defini-lo mais tarde com set_label().

Para definir uma tecla aceleradora para navegação por teclado, coloque uma sublinha antes de um dos caracteres do rótulo e especifique true para o parâmetro opcional mnemonic. Por exemplo:

Gtk::Button* pButton = new Gtk::Button("_Algo", true);

Sempre que possível, você deveria usar itens predefinidos, para garantir consistência com outros aplicativos e para melhorar a aparência dos seus usando ícones. Por exemplo,

Gtk::Button* pButton = new Gtk::Button(Gtk::Stock::OK);
nesse caso, ele usará o texto padrão, em todos os idiomas, com os aceleradores padrões, com um ícone padrão.

Gtk::Button é também um contêiner, então você pode colocar qualquer outro widget nele, como um Gtk::Image.

Referência

5.1.2 Exemplo

Este exemplo cria um botão com uma figura e um rótulo.

Figura 5.1 ‒ exemplo de botões

Código-fonte

File: buttons.h (For use with gtkmm 3, not gtkmm 2)

#ifndef GTKMM_EXAMPLE_BUTTONS_H
#define GTKMM_EXAMPLE_BUTTONS_H

#include <gtkmm/window.h>
#include <gtkmm/button.h>

class Buttons : public Gtk::Window
{
public:
  Buttons();
  virtual ~Buttons();

protected:
  //Signal handlers:
  void on_button_clicked();

  //Child widgets:
  Gtk::Button m_button;
};

#endif //GTKMM_EXAMPLE_BUTTONS_H

File: main.cc (For use with gtkmm 3, not gtkmm 2)

#include "buttons.h"
#include <gtkmm/application.h>

int main(int argc, char *argv[])
{
  Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

  Buttons buttons;

  //Shows the window and returns when it is closed.
  return app->run(buttons);
}

File: buttons.cc (For use with gtkmm 3, not gtkmm 2)

#include "buttons.h"
#include <iostream>

Buttons::Buttons()
{
  m_button.add_pixlabel("info.xpm", "cool button");

  set_title("Pixmap'd buttons!");
  set_border_width(10);

  m_button.signal_clicked().connect( sigc::mem_fun(*this,
              &Buttons::on_button_clicked) );

  add(m_button);

  show_all_children();
}

Buttons::~Buttons()
{
}

void Buttons::on_button_clicked()
{
  std::cout << "The Button was clicked." << std::endl;
}

5.1.3 Sinais

O widget Gtk::Button tem os seguintes sinais, mas a maioria das vezes você só precisará manipular o sinal clicked:

pressed

Emitido quando o botão é pressionado.

released

Emitido quando o botão é solto.

clicked

Emitido quando o botão é pressionado e depois liberado.

enter

Emitido quando o ponteiro do mouse se move sobre a janela do botão.

leave

Emitido quando o ponteiro do mouse sai da janela do botão.