gtkmm – exemple 6

Cet article fait parti d’un ensemble d’exemples et d’articles sur gtkmm consultables ici. C’est exemple est le bouton furtif. Il montre comment déplacer une fenêtre et comment masquer la barre de titre. Il permet aussi de récupérer la taille de l’écran.

capture

Téléchargement


Code source


main.cpp

#include 
#include 


int main(int argc, char* argv[])
{
	// Initialize gtkmm
	Gtk::Main app(argc, argv);
	// Create the window
	mainwindow w;
	// Start main loop
	Gtk::Main::run(w);
	return 0;
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include 


// The class mainwindow inherits from Gtk::Window
class mainwindow : public Gtk::Window
{
	// Constructor and destructor
public:    
	mainwindow();
	virtual             ~mainwindow();

protected:
	//Signal handlers (run when the button are clicked)
	void                  on_button();

	//Member widgets:
	Gtk::Button           buttonQuit;
	Gtk::Grid             mainGrid;
};


#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include 


// Constructor of the main Window (build ui interface).
mainwindow::mainwindow()
{
	// Initialize the main window and hide the title bar
	this->set_border_width(0);
	this->set_decorated(false);

	// Add the Quit button
	buttonQuit.add_label("Quit");
	buttonQuit.set_size_request(200,100);
	buttonQuit.signal_enter().connect(sigc::mem_fun(*this,&mainwindow::on_button));
	buttonQuit.signal_pressed().connect(sigc::mem_fun(*this,&mainwindow::close));
	mainGrid.attach(buttonQuit,0,1,3,1);

	// Display the main grid in the main window
	mainGrid.set_column_spacing(10);
	mainGrid.set_row_spacing(10);
	mainGrid.show_all();

	// Insert the grid in the main window
	add(mainGrid);
}


// Destructor of the class
mainwindow::~mainwindow()
{}


// Call when the button is clicked
void mainwindow::on_button()
{
	// Get screen dimensions
	Glib::RefPtr screen = Gdk::Screen::get_default();
	// Move window at a new random position
	this->move(rand()%screen->get_width(),rand()%screen->get_height());
}

Une réflexion au sujet de « gtkmm – exemple 6 »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *