Big List of C++ GUI Frameworks

If you are a C++ developer who wants to create graphical user interfaces (GUIs) for your applications, you might be overwhelmed by the number of frameworks and libraries available. How do you choose the best one for your needs? How do you compare their features, performance, compatibility, and ease of use?

In this blog post, we will introduce you to a big list of C++ GUI frameworks that you can use to create stunning GUIs for various platforms and devices. We will briefly describe each framework and provide some links for further reading. We hope this list will help you find the right framework for your next project.

Qt

Qt is a cross-platform software development framework that enables developers to create applications and devices for desktop, mobile, embedded, and web platforms. Qt provides a set of tools and libraries that simplify common tasks such as designing user interfaces, coding, debugging, testing, deploying, and maintaining software products. Qt also supports multiple programming languages such as C++, QML, Python, JavaScript, and more.

Qt was originally developed by Trolltech in 1991 as a GUI toolkit for C++. Since then, Qt has evolved into a comprehensive framework that covers various aspects of software development. Qt is used by many companies and organizations around the world for creating innovative and high-quality digital experiences. Some of the use cases for Qt include automotive digital cockpit systems, automation technology and smart manufacturing solutions, business intelligence and analytics software, smart TVs and electronics devices.

Qt is available under different licensing options depending on the needs of the users. There are commercial licenses that offer full access to Qt framework and tools as well as official support from The Qt Company. There are also open source licenses that allow users to use Qt under certain conditions such as contributing to the Qt project or complying with (L)GPL terms. Additionally, there are quality assurance tools that help users automate testing and elevate their quality standards.

Qt is constantly updated with new features and improvements to meet the changing demands of software development. The latest major release of Qt is Qt 6 which was launched in December 2020. Qt 6 offers enhanced performance, scalability, security, compatibility with modern technologies such as Vulkan graphics API or Metal rendering engine.

Sciter

Sciter is a multiplatform HTML/CSS/JavaScript engine for desktop and mobile application development. It allows web designers and developers to reuse their skills and experience in creating modern-looking UIs for native applications. Sciter supports Windows, Linux, Mac OS X, Android and iOS platforms.

Sciter is a single DLL or SO file that can be embedded into any programming language that supports C API. It does not require any external dependencies or frameworks. Sciter uses HTML as a UI declaration language, CSS as a styling language, and JavaScript-like scripts as a logic language. Sciter also supports HTML components, JSX syntax, Reactor framework, and virtual DOM.

Sciter is designed to render high-quality UIs on high-resolution monitors using GPU acceleration. It can handle rapidly changing UI trends and fashions with ease. Sciter has been used by some of the most prominent antivirus products on the market for over 10 years.

Sciter is a powerful and flexible tool for creating cross-platform applications with web technologies. You can learn more about Sciter from its official website, tutorials, articles, and GitHub repositories.

wxWidgets

wxWidgets is a cross-platform C++ library that allows developers to create graphical user interfaces (GUIs) for various operating systems, such as Windows, macOS, Linux and others. It uses the native controls and APIs of each platform to provide a consistent and native look and feel for the applications. wxWidgets also supports many popular scripting languages, such as Python, Perl and Ruby, through language bindings.

wxWidgets was originally developed by Julian Smart in 1992 as wxWindows, a library for creating Windows applications using the XView toolkit. Later, it was ported to other platforms and toolkits, such as GTK+, Motif and Mac OS. In 2004, it was renamed to wxWidgets to avoid confusion with Microsoft Windows.

wxWidgets is free and open source software distributed under a modified version of the LGPL license. It has a large and active community of developers and users who contribute to its development and documentation. wxWidgets also provides a set of tools and components for creating complex GUI applications, such as dialogs, menus, toolbars, sizers, validators, streams, sockets, threads and more.

One of the most well-known applications that use wxWidgets is Audacity , an open source audio editor and recorder. Other examples include Code::Blocks , a cross-platform IDE for C/C++, KiCad, an electronic design automation software suite, Poedit, a cross-platform gettext catalog editor FileZilla, a cross-platform FTP client , BitTorrent Sync , a peer-to-peer file synchronization tool , etc.

To learn more about wxWidgets or download the latest version of the library or its documentation , please visit https://www.wxwidgets.org/ .

GTK+

GTK+ is a cross-platform toolkit for creating graphical user interfaces. It offers a comprehensive set of widgets, and supports multiple programming languages including C, C++, Python, Perl, Ruby and Vala. GTK+ is based on the GObject system, which provides a powerful framework for object-oriented programming. GTK+ is free and open source software, licensed under the GNU Lesser General Public License (LGPL).

GTK+ was originally developed as part of the GIMP project, a popular image manipulation program. It was later adopted by the GNOME project, which uses GTK+ as the basis for its desktop environment and applications. GTK+ has also been used by many other projects, such as Inkscape, Firefox and Spotify. GTK+ supports various platforms such as Linux, Windows, macOS and Android.

GTK+ has a modular architecture that allows developers to customize and extend its functionality. It consists of several libraries that provide different levels of abstraction and functionality. Some of these libraries are:

  • GDK: The low-level library that handles input events and graphics rendering using different backends such as X11 or Wayland.
  • GTK: The core library that provides the basic widgets such as buttons, menus and dialogs.
  • GSK: The scene graph library that handles complex graphics effects such as shadows and animations.
  • GTK4: The latest version of GTK that introduces major changes and improvements such as layout managers, media support and declarative UI design.

GTK+ also provides bindings for various languages that allow developers to use GTK+ with their preferred language. Some of these bindings are:

  • PyGObject: The official Python binding for GObject-based libraries such as GTK+, GStreamer and WebKitGTK.
  • Gtkmm: The official C++ binding for GTK+, which uses modern C++ features such as templates and smart pointers.
  • GtkSharp: The official .NET binding for GTK+, which supports C#, Visual Basic.NET and other .NET languages.
  • Gtk-rs: The Rust binding for GTK+, which leverages Rust’s safety features and concurrency model.

GTK+ is a versatile toolkit that can be used to create applications ranging from simple utilities to complex desktop environments. It offers a rich set of widgets, a flexible object system and support for multiple languages and platforms. It is one of the most popular toolkits for creating graphical user interfaces in the open source community.

gtkmm

gtkmm is a C++ interface for the popular GUI library GTK+. It provides a convenient way to create graphical user interfaces with widgets such as buttons, labels, menus, dialogs and more. gtkmm follows the official GNOME Platform Bindings release schedule. gtkmm is free software distributed under the GNU Library General Public License (LGPL).

gtkmm uses modern C++ techniques such as namespaces, exceptions and templates. It also supports internationalization and accessibility features. gtkmm is designed to be easy to use while still providing access to the underlying GTK+ functionality. gtkmm also integrates well with other libraries such as Glibmm (C++ wrapper for GLib), Cairo (2D graphics library) and Pango (text layout engine).

To use gtkmm in your projects, you need to install the development packages for GTK+ and gtkmm on your system. You can find instructions on how to do that on the gtkmm website: https://www.gtkmm.org/en/documentation.html

You also need a C++ compiler that supports at least C++11 standard and a build system such as Meson or CMake. You can find examples of how to write and compile gtkmm applications on the gtkmm website: https://www.gtkmm.org/en/examples.html

gtkmm is a mature and stable library that has been used in many applications such as GIMP (image editor), Inkscape (vector graphics editor), Ardour (digital audio workstation) and many more. You can find a list of some of these applications on the gtkmm website: https://www.gtkmm.org/en/users.html

CEGUI

CEGUI stands for Crazy Eddie’s GUI, a free and open source library that provides windowing and widgets for graphics APIs and engines where such functionality is not natively available or severely lacking.

CEGUI is written in C++, cross-platform, MIT-licensed and targeted at game and application developers who want to create great user interfaces without spending too much time on building GUI sub-systems.

CEGUI supports many different rendering libraries and engines, such as OpenGL, DirectX, OGRE, Irrlicht and more. It also supports many different image loaders and codecs, such as FreeImage, DevIL, SILLY and more. It also supports many different XML parsers, such as Expat, Xerces-C++, TinyXML and more.

CEGUI offers a WYSIWYG editor called CEED for creating layouts and imagesets easily. CEGUI has a flexible memory management system that allows clients to map different types of allocators to different types of objects. CEGUI also supports scripting languages such as Lua, Python and Squirrel for creating dynamic GUI logic.

Dear ImGui

Dear ImGui is a bloat-free graphical user interface library for C++ with minimal dependencies. It allows you to create dynamic and interactive UI elements that can be rendered anytime in your 3D-pipeline-enabled application. Dear ImGui is fast, portable, renderer agnostic, and self-contained. You can use it to create content creation tools and visualization / debug tools for your projects.

To use Dear ImGui, you need to include the header files (imgui.h, imconfig.h) and the source files (imgui.cpp, imgui_draw.cpp, imgui_demo.cpp) in your project. You also need to provide mouse/keyboard/gamepad inputs and settings to Dear ImGui every frame. Then you can call various functions from the ImGui namespace to create UI elements such as windows, buttons, sliders, text inputs, color pickers, plots, etc.

Dear ImGui has a simple and intuitive API that lets you customize the appearance and behavior of your UI elements. You can also use themes and fonts to change the look and feel of your UI. Dear ImGui comes with many examples and demos that show how to use it in different scenarios and with different rendering backends.

Dear ImGui is designed for fast iterations and productivity. It does not aim to be a full-featured UI framework for end-users. It focuses on simplicity and flexibility rather than complexity and abstraction. Dear ImGui is suitable for integration in game engines, real-time 3D applications, full screen applications, embedded applications, or any applications on console platforms where operating system features are non-standard.

Noesis GUI

NoesisGUI is a powerful framework for creating user interfaces in C++ games and applications. It uses XAML, a declarative markup language that is compatible with Microsoft Expression Blend and WPF. NoesisGUI allows designers and developers to work in parallel, modifying the UI and getting immediate feedback without having to rebuild the application. NoesisGUI also supports data binding, skinning, animations, vector graphics, videos and more. NoesisGUI can be easily integrated with Unity and other popular engines and platforms. It offers high performance and resolution-independent rendering on Windows, macOS, Linux, iOS, Android, Xbox, PlayStation, Switch, Stadia and WebGL.

Juce

JUCE is a popular framework for developing audio applications and plug-ins in C++. It supports multiple platforms, including Windows, macOS, Linux, iOS and Android, and multiple plug-in formats, such as VST, VST3, AU, AUv3, AAX and LV2. JUCE also provides a rich set of features for creating user interfaces, graphics and audio processing. JUCE is open source under the GPLv3 license or a commercial license.

JUCE consists of several modules that can be included in your project as C++14 source code or via CMake. You can also use the Projucer tool to create and manage your JUCE projects using native development tools on each platform. JUCE has a large community of users and developers who contribute to its documentation and support forums.

JUCE is suitable for anyone who wants to create high-quality audio software or plug-ins with a consistent user experience across different platforms and hosts. Whether you are a beginner or an expert in C++, JUCE can help you achieve your goals faster and easier.

Fox Toolkit

Fox Toolkit is a cross-platform graphical user interface library that provides a wide range of widgets and controls for developing desktop applications.

Fox Toolkit supports multiple operating systems, including Windows, Linux, MacOS X, Solaris and FreeBSD. Fox Toolkit is written in C++ and uses an object-oriented design that allows for easy extension and customization. Fox Toolkit also offers advanced features such as OpenGL integration, drag-and-drop support, internationalization and localization, threading and networking support, and more.

Fox Toolkit is free software licensed under the GNU Lesser General Public License (LGPL).

MiniGUI

MiniGUI is a cross-platform GUI system that supports real-time and embedded operating systems. It was developed by Beijing Feynman Software Technology and released under the GNU GPL license in 1999. MiniGUI aims to be fast, stable, light-weight and flexible for various applications.

MiniGUI can run on Linux and its derivative μClinux, as well as other RTOSes such as eCos, VxWorks, pSOS, ThreadX and Nucleus. It can also support embedded resources and devices without file systems. MiniGUI is compatible with Windows resource file formats such as icons and cursors. It also supports skinning and multiple character sets, including ISO8859 and BIG5.

MiniGUI provides a rich set of controls and commands for creating GUI applications. It supports common controls such as button, edit box, list box, combo box, check box, radio group etc., as well as advanced controls such as tree view, grid view, tab control etc. MiniGUI also supports ActiveX controls and user-defined controls. MiniGUI has a menu system that allows creating main menu, context menu and drop-down menu easily.

MiniGUI has a powerful event-driven mechanism that handles user input events such as keyboard strokes and mouse clicks. It also supports application events such as timer events and network events. MiniGUI has a flexible windowing system that allows creating windows of different styles and sizes. It also supports MDI windows and dialog boxes.

MiniGUI is a mature GUI system that has been widely used in handheld terminals, portable media players, industry instruments and other embedded devices. It is an ideal choice for developing GUI applications for smart IoT devices.

Nuklear

This is a minimal-state, immediate-mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window/input handling but instead provides a highly modular, library-based approach, with simple input state for input and draw commands describing primitive shapes as output. So instead of providing a layered library that tries to abstract over a number of platform and render backends, it focuses only on the actual UI.

Features

  • Immediate-mode graphical user interface toolkit
  • Single-header library
  • Written in C89 (ANSI C)
  • Small codebase (~18kLOC)
  • Focus on portability, efficiency and simplicity
  • No dependencies (not even the standard library if not wanted)
  • Fully skinnable and customizable
  • Low memory footprint with total control of memory usage if needed / wanted
  • UTF-8 support
  • No global or hidden state
  • Customizable library modules (you can compile and use only what you need)
  • Optional font baker and vertex buffer output

NanoGUI

NanoGUI is a minimalistic cross-platform widget library for OpenGL 3.x or higher. It supports automatic layout generation, stateful C++11 lambdas callbacks, a variety of useful widget types and Retina-capable rendering on Apple devices thanks to NanoVG by Mikko Mononen. Python bindings of all functionality are provided using pybind11.

Note: this repository is currently in maintenance-only mode. A new and significantly modernized/refactored version of NanoGUI with features such as Metal/GLES/WebAssembly support is available here.

LittlevGL

LittlevGL is a free and open-source graphics library that allows you to create embedded graphical user interfaces (GUI) with easy-to-use graphical elements, beautiful visual effects and low memory footprint. It is written in C and compatible with C++.

LittlevGL supports various input devices such as touchpad, mouse, keyboard and encoder. It also supports multi-language and multi-display features. You can customize the appearance of the graphical elements according to your needs. LittlevGL is hardware independent and can work with any microcontroller or display that meets the minimum requirements.

To use LittlevGL, you need to port it to your hardware by providing some basic functions such as how to fill a pixel on the display or how to read an input device. You can also use a simulator on your PC to test your GUI design without embedded hardware. LittlevGL provides tutorials, examples, themes and documentation to help you get started quickly.

LittlevGL also has bindings for Micropython, which is a lightweight version of Python that runs on microcontrollers. With Micropython, you can develop GUI in a high level language that is easy to read and write. You can also use Micropython features such as REPL (read-eval-print loop) and modules to enhance your GUI development.

If you are interested in LittlevGL, you can visit its website (https://littlevgl.com/) for more information. You can also check its GitHub repository (https://github.com/littlevgl/lvgl/), join its forum (https://forum.littlevgl.com/) or read its blog (https://blog.lvgl.io/) for more resources.

neoGFX

neoGFX is a C++ app/game engine and development platform targeted at app and game developers that wish to leverage modern GPUs for performant application user interfaces and game graphics. neoGFX is still a work in progress (incomplete) so is not yet suitable for making apps or games. Currently neoGFX has only been built for and tested on Windows.

neoGFX uses C++20 features; although C++20 compiler support is currently patchy this isn’t a problem given the expected neoGFX 1.0 release date of Q4, 2021.

Features (when version 1.0 released)

  • clean modern C++ design including full exception safety supporting various widget allocation patterns (stack, member variable or free store);
  • use of standard non-proprietary C++ data types including using standard string classes (UTF-8 encoding) and containers from the C++ standard library;
  • simple, easy to use multi-threaded event system (an improvement over traditional signals and slots);
  • no baggage: neoGFX primarily contains only the GUI and graphics related functionality needed for creating apps and games;
  • full library of widgets and layout managers specifiable in an RJSON (Relaxed JSON) derived declarative UI description language drag/drop editable using the included design tool, neoGFX Design Studio;
  • CSS3 style sheet support with support for custom skins;
  • scripting engine, neos, that will be able to support a wide range of scripting languages (on release: neoscript, JavaScript and Lua);
  • sub-pixel text rendering;
  • simple window style for specifying that a window is “nested” rather than being a separate native desktop window;
  • “text_edit” widget supports multiple fonts, text colours (with optional gradient effects), colour emojis and rendering text in columns;
  • “Green” and “Arcade” modes to optimize CPU power consumption, fight #ClimateChange!
  • GPU shader rendered CSS3 compliant gradients with optional gaussian smoothing;
  • MVC (model-view-controller) related classes supporting robust and fast app design;
  • optional MDI support utilizing “nested” windows;
  • 2D, 2.5D and 3D game support: sprites, objects and physics;
  • Pure ECS (Entity-component-system) usable by both games and apps;
  • flexible asset management: texture images (e.g PNGs) can be stored in .zip archives which can be optionally embedded inside the program binary accessible using simple URLs;
  • support for OpenGL, DirectX and Vulkan.

morda

morda is a cross-platform non-intrusive GUI framework dedicated to games and multimedia applications. Its design was inspired by GUI system from Android and many concepts are borrowed from there. It is designed to use modern 3d graphics APIs like OpenGL etc.

U++

U++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of libraries (GUI, SQL, etc.), and an integrated development environment.

Rapid development is achieved by the smart and aggressive use of C++ rather than through fancy code generators. In this respect, U++ competes with popular scripting languages while preserving C/C++ runtime characteristics.

The U++ integrated development environment, TheIDE, introduces modular concepts to C++ programming. It features BLITZ-build technology to speedup C++ rebuilds up to 4 times, Visual designers for U++ libraries, a Topic++ system for documenting code and creating rich text resources for applications (like help and code documentation) and Assist++ - a powerful C++ code analyzer that provides features like code completion, navigation and transformation.

TheIDE can work with GCC, Clang, MinGW and Visual C++ and contains a full featured debugger. TheIDE can also be used to develop non-U++ applications.

U++ supports following platforms on the production level: Windows, macOS, GNU/Linux & FreeBSD.

What you can get with the U++ download in plain English?

Very effective C++ library for cross-platform development in source form.

A good integrated development environment, designed for developing large C++ applications.

You can use both, or you can use whichever you need.

dlib

dlib is a cross-platform software library that provides a range of algorithms and tools for machine learning, computer vision, image processing, numerical optimization, and data analysis. It is written in C++ and has bindings for Python, Java, C#, Ruby, and other languages. dlib is open source and licensed under the Boost Software License.

Some of the features of dlib include:

  • A collection of machine learning algorithms for classification, regression, clustering, dimensionality reduction, and structured prediction. These include support vector machines (SVMs), linear discriminant analysis (LDA), k-means clustering, principal component analysis (PCA), deep neural networks (DNNs), and conditional random fields (CRFs).
  • A modular design that allows users to easily create complex systems by combining different components and algorithms. For example, dlib provides a unified interface for training and using DNNs with various architectures and loss functions.
  • A high-performance implementation that leverages multi-core CPUs and GPUs to speed up computation. dlib also supports distributed computing using MPI or Hadoop.
  • A comprehensive documentation that covers the usage and implementation details of each algorithm and tool. The documentation also includes examples and tutorials to help users get started with dlib.
  • A large set of test cases that ensure the correctness and robustness of the library. dlib also follows good coding practices such as using static analysis tools and code reviews.

dlib is widely used in research and industry for various applications such as face detection and recognition, object detection and tracking, facial landmark detection, face alignment, face swapping, face aging, facial expression recognition, gesture recognition, human pose estimation, face morphing and more.

nana

Nana is a cross-platform library for creating graphical user interfaces (GUIs) in C++. It provides a modern and intuitive way of designing GUIs using widgets, layouts, events and signals. Nana supports Windows, Linux and MacOS platforms and can be integrated with various compilers and IDEs. Nana is open source and licensed under the Boost Software License. Some of the features of Nana include:

  • A rich set of widgets such as buttons, labels, text boxes, list boxes, tree views, menus, toolbars and more.
  • A flexible layout system that allows you to arrange widgets in grids, forms or nested panels.
  • A powerful event system that lets you handle mouse, keyboard and timer events using lambda functions or member functions.
  • A signal system that enables communication between widgets using slots and signals.
  • A drawing system that allows you to create custom graphics using shapes, images and fonts.
  • A resource management system that simplifies the loading and usage of images, icons and cursors.
  • A theme system that lets you customize the appearance of widgets using stylesheets.

Nana is designed to be easy to use and learn for beginners as well as advanced programmers. It has a comprehensive documentation that covers the basics as well as the details of each widget and feature. It also has a friendly community that provides support and feedback on the official website (http://nanapro.org/en-us/) and GitHub repository (https://github.com/cnjinhao/nana). If you are looking for a modern C++ GUI library that is cross-platform, lightweight and elegant, you should give Nana a try!

GWork

Work is a skinnable, embeddable GUI library with an extensive control set. Control rendering is abstracted, and can be implemented by any application wishing to use the library. Gwork (pronounced “gw-orc”) is a fork of the GUI library GWEN. It was forked to fix issues with GWEN and add new features.

A number of rendering backends are provided for use, or as an example for your own:

  • Allegro5 (cross-platform).
  • DirectX 11 (Windows 7+).
  • Irrlicht3D (cross-platform).
  • OpenGL2 (cross-platform. Uses GLFW).
  • OpenGL Core Profile (cross-platform. Uses GLM, GLEW, GLFW).
  • SDL2 (cross-platform).
  • SFML2 (cross-platform).
  • Software (cross-platform). Render to texture.

Note that the software renderer can be used on any platform, but, obviously, with the penalty of not having hardware acceleration. For more information see the documentation.

libui

libui is a simple and portable GUI library for C that uses the native GUI technologies of each platform it supports. It was created by Andrew Comminos (andlabs) and is available on GitHub. libui allows developers to create cross-platform graphical user interfaces with minimal dependencies and code. It supports Windows, Unix and Mac OS X platforms, and provides common widgets such as buttons, labels, sliders, menus, windows and more. libui also uses utf library for consistent UTF-8 and UTF-16 processing across platforms. libui is currently in mid-alpha stage, which means it is not feature-complete or stable enough for production use. Some of the features that are planned but not implemented yet include accessibility support, custom controls, printing support and more. However, libui has some advantages over other GUI libraries, such as being easy to install and use, having a small footprint and being fast and responsive . libui also has bindings for other languages such as Ruby, Go and Python.

Agar

Agar is a versatile product that can be used for various purposes. Agar is derived from red algae, mainly from the species Gracilaria and Gelidium, which are harvested and processed to obtain a jelly-like substance. Agar has many properties that make it useful in different fields, such as:

  • Agar is a solidifying agent for bacteriological culture media, allowing scientists to grow and study microorganisms in petri dishes.
  • Agar is a food additive that can thicken, stabilize, and gel various dishes, such as soups, desserts, jams, and ice creams. Agar is also vegan-friendly and gluten-free, making it suitable for people with dietary restrictions.
  • Agar is a cosmetic ingredient that can moisturize, soften, and smooth the skin and hair. Agar can also form films and gels that can deliver active ingredients or create different textures.
  • Agar is a medicinal product that can act as a laxative, an appetite suppressant, or a dental impression material. Agar can also help treat some infections and wounds by forming protective layers or dressings.
  • Agar is an industrial product that can clarify beverages such as beer and wine by removing impurities. Agar can also lubricate wires during drawing processes or size paper and fabrics during manufacturing.

Agar is an amazing natural product that has many applications and benefits. It is widely available in powder, flakes, or bricks form, and can be easily dissolved in boiling water or other liquids. Agar is also environmentally friendly and biodegradable, making it a sustainable choice for various uses.

FLTK

FLTK (pronounced “fulltick”) is a cross-platform C++ GUI toolkit for UNIX®/Linux® (X11), Microsoft® Windows®, and MacOS® X. FLTK provides modern GUI functionality without the bloat and supports 3D graphics via OpenGL® and its built-in GLUT emulation.

FLTK is designed to be small and modular enough to be statically linked, but works fine as a shared library. FLTK also includes an excellent UI builder called FLUID that can be used to create applications in minutes.

FLTK is provided under the terms of the GNU Library Public License, Version 2 with exceptions that allow for static linking.

IUP

IUP is a software library that provides a portable, scriptable interface for creating graphical user interfaces (GUIs) in different platforms. It was developed by Tecgraf, the Computer Graphics Technology Group of PUC-Rio (the Pontifical Catholic University of Rio de Janeiro) in Brazil.

IUP’s main features are:

  • It uses native controls of each platform, such as buttons, text fields, menus, etc., which gives a familiar look and feel to the users.
  • It supports multiple programming languages, such as C, C++, Lua, and LED. Lua is the preferred language for scripting IUP applications, as it offers a simple and expressive syntax and a powerful extension mechanism.
  • It has a consistent and easy-to-use API across all languages and platforms. The API is based on the concept of elements, which are objects that represent GUI components or containers. Elements can be created dynamically or loaded from a file using IUP’s own layout language (LED).
  • It has a modular architecture that allows adding new elements or drivers without affecting the core library. For example, there are modules for OpenGL integration, plotting graphs, displaying images, etc.
  • It is free software distributed under an MIT-style license , which means it can be used for any purpose without restrictions.

IUP is suitable for developing cross-platform applications that require a graphical interface but do not need complex or custom widgets. It is also ideal for prototyping and rapid development of GUIs using Lua as a scripting language.

Boost.UI

Boost.UI is a C++ User Interface (GUI) Boost library that aims to provide a cross-platform and native way of creating graphical user interfaces for C++ applications. Boost.UI has a STL-like and Boost-like API that is compatible with other Boost libraries and supports modern C++11/14/17 features. Boost.UI also supports graphics, various widgets, events and layouts to create rich and interactive user interfaces.

Boost.UI was created by Kolya Kosenko as an unofficial extension of the Boost library collection. It is not yet part of the official Boost distribution, but it follows the Boost guidelines and conventions. Boost.UI uses native system-provided widgets on different platforms, such as Windows API on Windows, GTK+ on Linux and Cocoa on macOS. This ensures that the user interface looks consistent with the system theme and behavior.

To use Boost.UI in your C++ project, you need to include the main header file <boost/ui.hpp> and use the boost::ui namespace. You also need to link with the appropriate system libraries depending on your platform. You can find more information and examples on how to use Boost.UI on its GitHub page: https://kosenko.github.io/boost.ui/.

LCUI

LCUI is a simple GUI library written in C that supports XML and CSS. You can use C, XML and CSS to build simple desktop applications for Windows and Linux platforms. LCUI is inspired by web development technologies and provides similar features such as element layout, style sheets, event handling, etc. LCUI also has a command line interface tool called lcui-cli that helps you create and run LCUI projects easily. LCUI is open source and hosted on GitHub , where you can find more information about its usage, installation, documentation and examples.

GLUI

GLUI is a C++ user interface library that provides various controls for OpenGL applications. It is based on GLUT, which means it can run on any platform that supports OpenGL. GLUI allows developers to create buttons, checkboxes, radio buttons, spinners, panels, text fields and other widgets easily and intuitively. GLUI also offers some unique controls that are designed for graphical manipulation, such as rotation and translation controls that let users interact with 3D objects.

GLUI was originally developed by Paul Rademacher at UNC Chapel Hill in 1999. Since then, it has been maintained and improved by a community of developers on GitHub. The latest version of GLUI is 2.37, released in October 2015. GLUI is distributed under the zlib license, which means it can be used freely for any purpose.

To use GLUI in your OpenGL application, you need to include the glui.h header file and link with the glui library file. You also need to have GLUT or FreeGLUT installed on your system. You can create a new GLUI window by calling the glui constructor with a pointer to an existing GLUT window as an argument. Then you can add controls to your GLUI window by calling methods such as add_button(), add_checkbox(), add_spinner(), etc. You can specify live variables and callback functions for each control to handle user input.

GLUI handles all the rendering and event handling for its controls automatically. You just need to call glutMainLoop() to start the main event loop of your application. GLUI will synchronize its windows with your GLUT windows and update them accordingly. You can also use glui->sync_live() to force all live variables to be synchronized with their corresponding controls.

For more information about GLUI, you can visit its official website at https://github.com/libglui/glui or read its manual at https://github.com/libglui/glui/blob/master/doc/glui_manual.pdf.

TGUI

TGUI is a cross-platform modern C++ GUI library that can work with SFML, SDL and GLFW. It allows you to create user interfaces with widgets such as buttons, text boxes, sliders, menus and more. You can customize the appearance of the widgets by using colors or images. TGUI also comes with a GUI builder tool that helps you design your interface visually and save it to a file that can be loaded by your program.

TGUI is easy to use and has a well-documented API. You can find tutorials, examples and documentation on the official website. TGUI supports multiple platforms such as Windows, Linux, macOS, Android and iOS. It also has a modular backend system that lets you choose which external library to use for rendering, font loading and event input. You can even create your own backend or reuse parts of existing ones.

TGUI is an open source project licensed under zlib license. You can download the source code from GitHub or use a package manager such as vcpkg or Conan to install it. TGUI is actively developed and maintained by its creator Texus and other contributors.

ivtools

ivtools (pronounced eye-vee-tools) is a suite of free X Windows drawing editors for PostScript, TeX, and web graphics production, as well as an embeddable and extendable vector graphic shell

It is made up of layered collection of free C++ frameworks that vertically augment the mechanisms of Unidraw.

GuiLite

GuiLite is a lightweight and cross-platform GUI library that can be used to create graphical user interfaces for various devices and platforms. It is written in C++ and has zero dependencies on other libraries or frameworks. GuiLite is header-only, which means you only need to include one file (GuiLite.h) in your project to use it.

Some of the features of GuiLite are:

  • High rendering performance, even on low-end devices such as microcontrollers (MCU).
  • Compatibility with third-party frameworks such as Qt, MFC, Winform, Cocoa and Web.
  • Support for multiple languages such as C/C++, Swift, Java, Javascript, C# and Golang.
  • Support for Unicode fonts and bitmap resources.
  • Support for 3D graphics and video playback.
  • Support for cloud and IoT solutions with real-time code telemetry and analysis.

GuiLite is easy to learn and use. You can find documentation, examples and tutorials on its GitHub repository: https://github.com/idea4good/GuiLite. You can also join the developer community on Discord or WeChat to ask questions and share your feedback.

GuiLite is an open source project licensed under Apache License 2.0. You can contribute to its development by reporting issues, submitting pull requests or donating to the project. GuiLite aims to be the smallest header-only GUI library for all platforms.

Ultralight

Ultralight is a next-generation HTML renderer for desktop apps and games. It allows developers to create user interfaces with modern HTML/CSS/JS technologies, while still maintaining high performance and low memory usage. Ultralight has two renderers: a GPU renderer that can render HTML directly on the graphics card using various APIs, and a CPU renderer that can render HTML to a bitmap with SIMD acceleration. Ultralight is based on WebKit, but it has been stripped down to the essentials and optimized for speed and size. Ultralight supports most of the HTML5, CSS, and JavaScript features that are commonly used in web development.

Ultralight can be used for different types of applications and platforms. For games, Ultralight can provide a powerful and flexible way to create in-game UIs with HTML/JS. It can integrate with existing game engines and asset pipelines, and render HTML to an in-game texture using either the CPU or GPU renderer. For desktop apps, Ultralight can enable developers to build cross-platform UIs with native look and feel using HTML/JS. It can leverage the AppCore framework to launch windows and render to OS-native GPU surfaces.

Ultralight is designed to be ultra-fast and ultra-light. It has a small binary size (around 10 MB) and low memory footprint (around 4 MB per view). It also allows developers to configure various aspects of its behavior, such as allocator settings, resource loading, debugging tools, etc. Ultralight offers different licensing options for different needs: a free license for indie developers with less than $100K annual revenue; a subscription license for startups and small businesses with less than $50M annual revenue; and an enterprise license for large organizations with more complex licensing needs.

Chromium Embedded Framework

Chromium Embedded Framework (CEF) is a framework that allows developers to embed a Chromium-based browser engine into their applications. CEF provides a simple API for interacting with web content and exposing native functionality to web pages. CEF supports multiple programming languages and platforms, such as C++, C#, Java, Python, Linux, Windows and macOS.

CEF consists of two main components: the browser process and the render process. The browser process runs the application logic and communicates with the native operating system. The render process runs the web content and executes JavaScript code. The two processes communicate through an inter-process communication (IPC) mechanism that enables bidirectional message passing.

CEF can be used for various purposes, such as creating desktop applications with web technologies, adding web views to native applications, testing web pages or extensions in isolation, or enhancing existing browsers with custom features. CEF is open source and based on the Chromium project, which powers many popular browsers such as Google Chrome, Microsoft Edge and Opera.

CopperSpice

CopperSpice is a set of individual libraries which can be used to develop cross platform software applications in C++. It is a totally open source project released under the LGPL V2.1 license and was initially derived from the Qt framework. Over the last several years CopperSpice has completely diverged, with a goal of providing a first class GUI library to unite the C++ community.

Our motivation for developing CopperSpice was to change the fundamental design and turn the existing framework into a set of libraries for C++ developers. We are accomplishing this by leveraging modern C++ functionality, new technology, and modern tooling. CopperSpice currently requires C++17 or newer.

You can use CopperSpice with any existing tool chain such as GCC, clang, or MSVC. A C++ program using the CopperSpice libraries can be developed using any editor such as VI, emacs, or Diamond and built using CMake from a shell command line. For an integrated environment Visual Studio or QtCreator can be used for development, building, testing, and deployment.

FlatUI

FlatUI is a term that can refer to different things depending on the context. In this text, we will focus on two possible meanings of FlatUI: a C++ GUI library and a Bootstrap theme.

FlatUI as a C++ GUI library is an open source project developed by Google that aims to provide a simple, efficient and easy way to create user interfaces for games and graphical applications. It uses an immediate mode approach, which means that the UI elements are created and rendered with function calls every frame, rather than using objects that persist over time. This has several advantages, such as less code, easy dynamic UIs, local event handling, compositional functions and super efficiency. FlatUI also supports automatic layout, style independence, unicode and i18n aware font rendering and cross-platform compatibility. FlatUI depends on several other libraries, such as FreeType, HarfBuzz, MathFu and FPLBase .

FlatUI as a Bootstrap theme is another open source project developed by Designmodo that offers a beautiful and modern design for web applications. It redesigns many of the Bootstrap components to look flat in every pixel, using simple shapes, colors and icons. FlatUI also includes some custom components, such as switches, tags and menus. FlatUI can be easily integrated with Bootstrap by adding some CSS and JavaScript files to your HTML page.

SFGUI

SFGUI is a simple and fast graphical user interface library for C++ that uses SFML as its rendering backend. It provides a rich set of widgets such as buttons, labels, sliders, spinners, check boxes, radio buttons, windows and more. It also supports custom themes and fonts.

SFGUI is easy to use and integrate with any SFML project. It has a modern C++ design that uses smart pointers and containers to manage memory and resources. It also has a flexible event system that allows users to handle input events from widgets or directly from SFML.

SFGUI is open source and available on GitHub under the zlib license. You can download it from the download page or build it from source using CMake. You can also find documentation, examples and tutorials on the GitHub wiki or on the official website.

SFGUI is a great choice for creating user interfaces for your SFML applications or games. It is lightweight, fast and customizable. It also works well with other SFML libraries such as Thor or SFECS.

Lgi

LGI is an open source GUI framework (on Phabricator) for abstracting out all the operating system dependencies that you can produce portable code. It handles all the graphical interface functions, threading and semaphores, network connectivity and lots of other bits and pieces to help build small, fast and reliable applications.

The strengths of LGI is that it’s a small enough library that one person can understand it all. Also it’s not too much of a burden on an application, both in increased download time and memory footprint. LGI at the moment compresses to about 519 KiB, which while not insignificant is quite a bit smaller than the other options.

Ultimately however size is a secondary consideration to the core feature of LGI and that is portability. Currently 3 serious ports exist: Windows, Mac and Linux. There is also a legacy Haiku/BeOS port which is unsupported.

Verdigris

Verdigris is a header-only library that can be used with Qt. It uses macros to create a QMetaObject that is binary compatible with Qt’s own QMetaObject without requiring moc. In other words, you can use Verdigris macros in your Qt or QML application instead of some of the Qt macros and then you do not need to run moc.


To contact me, send an email anytime or leave a comment below.