gtkmm (anteriormente conocido como gtk-- o gtk minus minus [1] ) es la interfaz oficial de C++ para la popular biblioteca GUI GTK . gtkmm es un software libre distribuido bajo la Licencia Pública General Reducida de GNU (LGPL).
gtkmm permite la creación de interfaces de usuario ya sea en código o con Glade Interface Designer , utilizando la clase Gtk::Builder. Otras características incluyen devoluciones de llamadas con seguridad de tipos , un conjunto completo de elementos de control gráfico y la extensibilidad de widgets mediante herencia .
Características
Debido a que gtkmm es la interfaz oficial de C++ de la biblioteca GUI GTK , los programadores de C++ pueden usar las técnicas OOP comunes, como la herencia , y recursos específicos de C++ como STL (de hecho, muchas de las interfaces de gtkmm, especialmente aquellas para contenedores de widgets , están diseñadas para ser similares a la Biblioteca de plantillas estándar (STL)).
Las características principales de gtkmm se enumeran a continuación:
- Utilice la herencia para derivar widgets personalizados .
- Manejadores de señales con seguridad de tipos , en C++ estándar .
- Polimorfismo .
- Uso de la biblioteca estándar de C++, incluidas cadenas , contenedores e iteradores .
- Internacionalización completa con UTF-8 .
- Gestión
completa de memoria C++ .
- Composición del objeto .
- Desasignación automática de widgets asignados dinámicamente .
- Uso completo de los espacios de nombres de C++ .
- Sin macros .
- Multiplataforma: Linux ( gcc , LLVM ), FreeBSD (gcc, LLVM), NetBSD (gcc), Solaris (gcc, Forte ), Win32 (gcc, MSVC++ ), macOS (gcc), otros.
Hola mundo en gtkmm
//HolaMundoVentana.h
#ifndef HELLOWORLDWINDOW_H
#define HELLOWORLDWINDOW_H
#include <gtkmm/ventana.h> #include <gtkmm/botón.h>
// Deriva un nuevo widget de ventana a partir de uno existente.
// Esta ventana solo contendrá un botón denominado "Hola mundo"
class HelloWorldWindow : public Gtk :: Window { public : HelloWorldWindow ();
protegido :
Gtk :: Botón hola_mundo ; };
#finsi
//HolaMundoVentana.cc
#include <iostream> #include "HolaMundoVentana.h"
HelloWorldWindow :: HelloWorldWindow () : hello_world ( "Hola Mundo" ) { // Establece el título de la ventana. set_title ( "Hola Mundo" );
// Agrega el botón de miembro a la ventana,
add ( hello_world );
// Manejar el evento 'click'.
hello_world . signal_clicked (). connect ([] () { std :: cout << "Hola mundo" << std :: endl ; }); // Mostrar todos los widgets secundarios de la ventana. show_all_children (); }
//principal.cc
#include <gtkmm/main.h> #include "HolaMundoVentana.h"
int main ( int argc , char * argv []) { // Inicialización Gtk :: Kit principal ( argc , argv );
// Crear un objeto de ventana Hola mundo
ejemplo HelloWorldWindow ;
// bucle principal de gtkmm
Gtk :: Main :: run ( ejemplo ); devolver 0 ; }
El programa anterior creará una ventana con un botón denominado "Hola mundo". Al hacer clic en el botón, se envía "Hola mundo" a la salida estándar.
El programa se ejecuta utilizando los siguientes comandos:
$ g++ -std = c++11 *.cc -o ejemplo ` pkg-config gtkmm-3.0 --cflags --libs ` $ ./ejemplo
Generalmente esto se hace usando un makefile simple .
Aplicaciones
Algunas aplicaciones notables que utilizan gtkmm incluyen:
- Amsynth [2]
- Cadabra (programa de ordenador) [3]
- Dibujo de gráficos vectoriales de Inkscape .
- Horizon EDA es un paquete de automatización de diseño electrónico para el diseño de placas de circuitos impresos.
- PDF Slicer Una aplicación sencilla para extraer, fusionar, rotar y reordenar páginas de documentos PDF.
- Workrave ayuda en la recuperación y prevención de RSI.
- Monitor del sistema Gnome [4]
- Gigedit [5]
- Herramienta de partición de discos GParted .
- GUI de Nemiver para el depurador GNU gdb.
- Herramientas de PulseAudio : pavucontrol, [6] paman, [7] paprefs [8] pavumeter, [9]
- Terapeuta en bruto [10]
- Organizador de documentos y gestor de bibliografías de GNOME Referencer
- Sec24 [11]
- Estudio Synfig [12]
- Linthesia [13]
- MySQL Workbench [14] Interfaz gráfica de usuario de base de datos del administrador.
- Estación de trabajo de audio digital (DAW) de código abierto Ardour para Linux y MacOS.
- Aplicación para tomar notas de escritorio Gnote .
- VisualBoyAdvance [15]
- Tanto VMware Workstation como VMware Player utilizan gtkmm para sus puertos de Linux.
Véase también
Referencias
- ^ Preguntas frecuentes sobre gtkmm
- ^ "Debian -- Detalles del paquete amsynth en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete cadabra en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete gnome-system-monitor en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete gigedit en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete pavucontrol en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete paman en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete paprefs en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete pavumeter en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete rawtherapee en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete seq24 en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete synfigstudio en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete linthesia en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete mysql-workbench en jessie" . Consultado el 6 de marzo de 2017 .
- ^ "Debian -- Detalles del paquete visualboyadvance-gtk en jessie" . Consultado el 6 de marzo de 2017 .
Enlaces externos
- Sitio web oficial