gtkmm - gtkmm
Repository | |
---|---|
Geschrieben in | C ++ |
Plattform | GTK |
Art | Sprachbindung |
Lizenz | GNU Lesser General Public License |
Webseite | www |
gtkmm (früher bekannt als gtk-- oder gtk minus minus ) ist die offizielle C ++ - Schnittstelle für die beliebte GUI- Bibliothek GTK . gtkmm ist freie Software, die unter der GNU Lesser General Public License (LGPL) vertrieben wird.
Mit gtkmm können Benutzeroberflächen entweder im Code oder mit dem Glade Interface Designer mithilfe der Gtk :: Builder-Klasse erstellt werden. Weitere Funktionen sind typsichere Rückrufe , ein umfassender Satz grafischer Steuerelemente und die Erweiterbarkeit von Widgets durch Vererbung .
Eigenschaften
Da gtkmm die offizielle C ++ - Schnittstelle der GUI- Bibliothek GTK ist , können C ++ - Programmierer die gängigen OOP- Techniken wie Vererbung und C ++ - spezifische Funktionen wie STL verwenden (tatsächlich sind viele der gtkmm-Schnittstellen, insbesondere für Widget- Container , verfügbar Entworfen, um der Standard Template Library (STL) ähnlich zu sein .
Die Hauptmerkmale von gtkmm sind wie folgt aufgeführt:
- Verwenden Sie die Vererbung , um benutzerdefinierte Widgets abzuleiten .
- Typensichere Signalhandler in Standard- C ++ .
- Polymorphismus .
- Verwendung der Standard C ++ - Bibliothek, einschließlich Zeichenfolgen , Containern und Iteratoren .
- Vollständige Internationalisierung mit UTF-8 .
- Vollständige C ++ - Speicherverwaltung.
- Objektzusammensetzung .
- Automatische Aufhebung der Zuordnung von dynamisch zugewiesenen Widgets .
- Vollständige Verwendung von C ++ - Namespaces .
- Keine Makros .
- Plattformübergreifend: Linux ( gcc , LLVM ), FreeBSD ( gcc , LLVM ), NetBSD ( gcc ), Solaris ( gcc , Forte ), Win32 ( gcc , MSVC ++ ), macOS ( gcc ), andere.
Hallo Welt in gtkmm
//HelloWorldWindow.h
#ifndef HELLOWORLDWINDOW_H
#define HELLOWORLDWINDOW_H
#include <gtkmm/window.h>
#include <gtkmm/button.h>
// Derive a new window widget from an existing one.
// This window will only contain a button labelled "Hello World"
class HelloWorldWindow : public Gtk::Window
{
public:
HelloWorldWindow();
protected:
Gtk::Button hello_world;
};
#endif
//HelloWorldWindow.cc
#include <iostream>
#include "HelloWorldWindow.h"
HelloWorldWindow::HelloWorldWindow() : hello_world("Hello World")
{
// Set the title of the window.
set_title("Hello World");
// Add the member button to the window,
add(hello_world);
// Handle the 'click' event.
hello_world.signal_clicked().connect([] () {
std::cout << "Hello world" << std::endl;
});
// Display all the child widgets of the window.
show_all_children();
}
//main.cc
#include <gtkmm/main.h>
#include "HelloWorldWindow.h"
int main(int argc, char *argv[])
{
// Initialization
Gtk::Main kit(argc, argv);
// Create a hello world window object
HelloWorldWindow example;
// gtkmm main loop
Gtk::Main::run(example);
return 0;
}
Das obige Programm erstellt ein Fenster mit einer Schaltfläche mit der Bezeichnung "Hello World". Die Schaltfläche sendet "Hallo Welt" an die Standardausgabe, wenn Sie darauf klicken.
Das Programm wird mit den folgenden Befehlen ausgeführt:
$ g++ -std=c++11 *.cc -o example `pkg-config gtkmm-3.0 --cflags --libs`
$ ./example
Dies erfolgt normalerweise mit einem einfachen Makefile .
Anwendungen
Einige bemerkenswerte Anwendungen, die gtkmm verwenden, umfassen:
- Amsynth
- Cadabra (Computerprogramm)
- Inkscape Vector Grafikzeichnung.
- Horizon EDA ist ein Electronic Design Automation-Paket für das Design von Leiterplatten.
- PDF Slicer Eine einfache Anwendung zum Extrahieren, Zusammenführen, Drehen und Neuordnen von Seiten von PDF-Dokumenten.
- Workrave Hilft bei der Wiederherstellung und Prävention von RSI.
- Gnome System Monitor
- Gigedit
- GParted Disk Partitioning Tool.
- Nemiver- GUI für die GNU-Debugger-GDB.
- PulseAudio- Tools: Pavucontrol, Paman, Paprefs Pavumeter,
- RawTherapee
- GNOME Referencer Document Organizer und Bibliography Manager
- Seq24
- Synfig Studio
- Linthesia
- GUI der MySQL Workbench Administrator-Datenbank.
- Ardor Open Source Digital Audio Workstation (DAW) für Linux und MacOS.
- Gnote Desktop Notetaking-Anwendung.
- VisualBoyAdvance
- VMware Workstation und VMware Player verwenden beide gtkmm für ihre Linux-Ports.