Κουμπί

5.1.1. Κατασκευαστές

Υπάρχουν δύο τρόποι δημιουργίας ενός κουμπιού. Μπορείτε να ορίσετε μια συμβολοσειρά ετικέτας στον κατασκευαστή Gtk::Button, ή να το ορίσετε αργότερα με set_label().

Για τον ορισμό ενός πλήκτρου επιταχυντή για περιήγηση πληκτρολογίου, τοποθετήστε μια υπογράμμιση πριν από έναν από τους χαρακτήρες της ετικέτας και ορίστε true (αληθές) για την προαιρετική παράμετρο mnemonic (μνημονική). Για παράδειγμα:

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

Έτοιμα στοιχεία συνιστώνται για χρήση στα κουμπιά. Από την gtkmm-3.10 είναι ξεπερασμένα. Δεν πρέπει να χρησιμοποιηθούν σε νεογραμμένο κώδικα. Όμως, η τεκμηρίωση του namespace Gtk::Stock εμφανίζει συνιστώμενες ετικέτες και επώνυμα εικονίδια να εμφανίζονται στα κουμπιά.

Η Gtk::Button είναι επίσης ένας περιέκτης, έτσι μπορείτε να βάλετε οποιοδήποτε άλλο γραφικό συστατικό, όπως μια Gtk::Image μέσα του.

Reference

5.1.2. Παράδειγμα

Αυτό το παράδειγμα δημιουργεί ένα κουμπί με μια εικόνα και μια ετικέτα.

Φιγούρα 5-1παράδειγμα κουμπιών

Source Code

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: 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;
}

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);
}

5.1.3. Σήματα

Το γραφικό συστατικό Gtk::Button έχει τα παρακάτω σήματα, αλλά τον περισσότερο χρόνο θα χειρίζεστε μόνο το clicked (πατημένο) σήμα:

pressed

Εκπέμπεται όταν πατιέται το κουμπί.

released

Εκπέμπεται όταν πατιέται το κουμπί.

clicked

Εκπέμπεται όταν πατιέται το κουμπί και ελευθερώνεται.

enter

Εκπέμπεται όταν ο δείκτης του ποντικιού μετακινείται πάνω από το παράθυρο του κουμπιού.

leave

Εκπέμπεται όταν ο δείκτης του ποντικιού αφήνει το παράθυρο του κουμπιού.