A list of free, cross-platform GUI solutions for C++. If you don’t like Qt, or other major GUI frameworks like wxWidgets or GTK, the choices available to you are a bit overwhelming.
If you know of other C++ UI libraries not listed here, dead or alive, let me know!
Healthy Projects
At the time of writing, these projects were in active development. The list of pros and cons is certainly incomplete. Just a quick overview of what I could gather about the various libraries. They are spiced up with my personal opinion where appropriate.
Qt


Pros
- very battle tested / production ready
- IDE and UI builder
- many c++ programmers swear by it
- it does have everything you need
Cons
- ginormous, heavy framework
- uses ancient paradigms
- feature creep, the project
- tends to overtake all your structures
- slow
- I don’t like it
Platforms
- Linux, macOS, Windows
- Android, iOS/tvOS/watchOS, WinRT
- Embedded Linux, INTEGRITY, QNX, VxWorks
License
- commercial
- GPL3 & LGPL3
Sciter


Sciter allows using time proven, robust, and flexible HTML and CSS for GUI definition, and GPU accelerated rendering. Sciter Engine is a single, compact DLL of 5+ Mb in size. Application using it are 10+ times smaller than the ones built with Electron or Qt.
Pros
- battle tested / production ready
- html, css, scripting
- very easy to use, offers many advanced ui features
- has a DOM inspector
Cons
- not open-source, though binaries are available for free
- documentation isn’t great
- tooling ecosystem is stale
Platforms
- Linux, macOS, Windows, WinRT
- Supposedly Android, iOS
License
- commercial, free
Ultralight


Ultra-fast, ultra-light, standards-compliant HTML renderer for applications and games.
Pros
- battle tested / production ready
- html/css/js
- good documentation and multiple samples
- supports both application and game scenarios (render to texture)
Cons
- non-platform theme (expected with css)
- usual overhead of js <-> c++ integration
Platforms
- Linux, macOS, Windows
- Xbox One, PS4
License
- commercial, free under $100K or non-commercial
Noesis GUI


The core of NoesisGUI is a resolution-independent and vector-based rendering engine that is built to take advantage of modern graphics hardware.
Pros
- battle tested / production ready
- impressive list of platforms and backends
- markup language
- best-in-class visual editor (Microsoft Blend)
- great documentation with many examples
Cons
- closed-source, limited free license
- developers and UI designers must use Windows
- heavy setup and integration
Platforms
- Linux, macOS, Windows
- Android, iOS,
- UWP, Xbox One, PS4, Nintendo Switch, WebGL
License
- commercial, free under €100K
Dear ImGui


Pros
- battle tested / production ready
- available on conan
- minimal dependencies
Cons
- nothing jumps out to me
Platforms
- Linux, macOS, Windows
- Android
License
- MIT
Juce


Pros
- battle tested / production ready
- fancy
Cons
- more of an audio framework with UIs
- heavy framework (a-la Qt)
Platforms
- Linux, macOS, Windows
- Android, iOS
License
- commercial, free under $50K
- GPL
wxWidgets


Pros
- battle tested / production ready
- platform look with native widgets
- available on conan
Cons
- convoluted api
Platforms
- Linux, macOS, Windows
License
- wxWindows Library Licence (LGPL-like)
GTK+


Pros
- battle tested / production ready
Cons
- building & linking is hell
- looks meh
- GNOME
- I’m not personally a fan of the APIs
Platforms
- Linux, macOS, Windows
License
- LGPL 2.1
gtkmm


Pros
- interface builder
- listed on Bjarne’s website?
Cons
- autotools
- GNOME
Platforms
- Linux, macOS, Windows
License
- LGPL 2.1
CEGUI


Pros
- battle tested / production ready
- wysiwyg editor
Cons
- from past experiences, a pain to build & link
Platforms
- Linux, macOS, Windows
License
- MIT
Fox Toolkit


Pros
- battle tested / production ready (used in CAD tools)
Cons
- ugly af
Platforms
- Linux, macOS (X server), Windows, a bunch of older UNIX flavors
- IRIX, HP-UX, Solaris/SunOS, AIX, DYNIX
License
- LGPL
MiniGUI


Pros
- battle tested / production ready
- wysiwig UI editor
- look at that list of supported platforms!
- fills embedded niche
Cons
- autotools is cancer
- seems limited due to its embedded focus
Platforms
- Linux, Windows
- uClinux, eCos, uC/OS-II, VxWorks, pSOS, ThreadX, Nucleus
License
- commercial
- GPL
Nuklear


Pros
- single header :o
- no dependencies
- pretty
Platforms
- Linux, macOS, Windows
- Android
License
- MIT
- Public Domain
raygui


Pros
- simple
- pretty
- many widgets
- APIs based on well known Unit3D IMGUI (quick to learn)
Cons
- “raygui is intended for tools development”
Platforms
- Not clearly listed, assuming : Linux, macOS, Windows
License
- zlib
NanoGUI


Pros
- very pretty
- functional apis
Cons
- have not fixed their dependency hell (haven’t updated NanoVG)
Platforms
- Linux, macOS, Windows
License
- BSD-style
microui


Pros
- tiny
- fixed-sized memory (great for embedded)
Cons
- pretty limited
Platforms
- I’m guessing at minimum : Linux, macOS, Windows
License
- MIT
U++


Pros
- IDE?
Cons
- IDE?
- heavy framework (a-la Qt)
Platforms
- Linux, Windows
License
- BSD
nana


The primary task is to make things simple and intuitive, Nana brings very simple and reasonable concepts to keep it easy. By the modern C++ style, you can get rid of the name constraints and the syntax constraints which are two things making your code stiff. Now you can make your code more straightforward and readable.
Pros
- c++11
- seems very active
Cons
- not battle tested
Platforms
- Linux, Windows
License
- Boost v1
libui


Pros
- many bindings
- looks native
- minimal dependencies
Cons
- as stated by the author, no documentation
Platforms
- Linux, macOS, Windows
License
- MIT
Agar


Pros
- minimal dependencies
Cons
- subversion!?
Platforms
- Linux, macOS, Windows
- many BSDs, IRIX
License
- MIT
FLTK


Pros
- lightweight?
- UI builder
- cmake
Cons
- ugly af
Platforms
- Linux, macOS, Windows
License
- LGPL 2.0
IUP


IUP’s purpose is to allow a program to run in different systems without changes - the toolkit provides the application portability. Supported systems include: GTK+, Motif and Windows.
Pros
- actually looks quite complete
Cons
- sourceforge in 2019!?
- cruelty towards programmers
Platforms
- Linux, Windows
- BSD, SunOS, IRIX, AIX
License
- MIT
Boost.UI


Pros
- uses native platform widgets
Cons
- just a wrapper around wxWidgets
- boost stigma
- very new, not battle tested
Platforms
- Linux, Windows
License
- Boost v1
LCUI


Pros
- css
- pretty
- bootstrap available through LCUI.css
Cons
- a personal project (not battle tested)
- no hardware rendering (will be slow)
- no ctrl-c, ctrl-v!?
Platforms
- Linux, Windows
License
- MIT
horus_ui


Pros
- looks good
- has some nice features (native file dialogs & DPI awareness)
Cons
- embeds its dependencies in source tree (dependency hell guaranteed)
- premake?
- enforces OpenGL loader & context lib (glew + SDL)
Platforms
- Linux, Windows
License
- MIT
GuiLite


GuiLite is embeddable, it runs inside other UI frameworks(e.g, Qt, MFC, Winform, Cocoa). You could use GuiLite features and host UI features simultaneously.
Pros
- lite
- themes
- embedded
Platforms
- Linux, macOS, Windows
- Android, iOS
- Docker, MCU
License
- Apache-2.0
LittlevGL


Pros
- pretty
- fills embedded niche
Cons
- must use simulators since it is embedded only
Platforms
- Linux, macOS, Windows
License
- MIT
dlib


Pros
- might be interesting if you work in ML
Cons
- heavy framework which also provides GUI widgets
Platforms
- Linux, macOS, Windows
License
- Boost v1
GWork


Pros
- multiple rendering backends
Cons
- not battle tested
- dying?
Platforms
- Linux, macOS, Windows
License
- MIT
ivtools


Pros
- it is available on github and still being updated
Cons
- where to begin…
Platforms
- Linux, macOS, Windows
- SunOS / Solaris, IRIX, BSDs
License
- BSD
GLUI


Pros
- might be interesting if you are targeting a hipster retro userbase
Cons
- very gray
Platforms
- Linux, Windows
License
- Zlib
morda


Pros
- hardware rendering
- available on nuget
Cons
- doesn’t use cmake (they have hardcoded all platform IDE solutions)
Platforms
- Linux, macOS, Windows
License
- MIT
TGUI


Pros
- has a GUI builder
Cons
- requires SFML
- not very pretty
Platforms
- Linux, macOS, Windows
- Android
License
- Zlib
Telex
Telex is a C++ UI framework. It is a UI framework without widgets - instead the UI is composed using common web tools and frameworks. Therefore Telex is small, easy to learn and quick to take in use.
Pros
- c++17
- cmake
Cons
- not battle tested
Platforms
- Linux, macOS, Windows
License
- MIT
WTL
Windows Template Library (WTL) is a C++ library for developing Windows applications and UI components. It extends ATL (Active Template Library) and provides a set of classes for controls, dialogs, frame windows, GDI objects, and more.
Pros
- very lightweight header only library
- NuGet package
Cons
- Windows only
- Sourceforge!?
- restrictive licenses
Platforms
- Windows
License
- Common Public License 1.0 (GPL-like license)
- Microsoft Public License (GPL-like license)
Chromium Embedded Framework
The Chromium Embedded Framework (CEF) is a simple framework for embedding Chromium-based browsers in other applications.
Cons
- ginormous
- do you really want to embed chromium for your UI?
Platforms
- Linux, macOS, Windows
License
- BSD
CopperSpice
CopperSpice is of a set of C++ libraries used to develop cross-platform software applications. This is an open source project released under the LGPL V2.1 license. CopperSpice was derived from the Qt framework. Our motivation for developing CopperSpice was to change the core design and leverage modern C++ functionality.
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. CopperSpice currently requires C++14 or newer.
Pros
- standard c++ fork of Qt
Cons
- based on Qt
Platforms
- Linux, macOS, Windows
License
- LGPL 2.1
FlatUI
FlatUI is an immediate mode C++ GUI library that aims to be a simple, efficient and easy to use way to add menus, HUDs and any kind of other UI to your game or graphical application. It also offers unicode & i18n aware font-rendering.
Cons
- dying?
Platforms
- Linux, macOS, Windows
- Android
License
- MIT
SFGUI
Simple and Fast Graphical User Interface.
Cons
- requires SFML
Platforms
- couldn’t find the list, but I believe : Linux, macOS, Windows
License
- Zlib
Lgi
LGI is an open source GUI framework (on BitBucket) 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 peices to help build small, fast and reliable applications.
Cons
- looks like a lesser Qt
Platforms
- couldn’t find the list
License
- couldn’t find it
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.
Pros
- removes need for Qt moc
Cons
- based on Qt
Platforms
- doesn’t list, but probably the same as Qt 4
License
- LGPL 3.0
TK
Tk is a graphical user interface toolkit that takes developing desktop applications to a higher level than conventional approaches. Tk is the standard GUI not only for Tcl, but for many other dynamic languages, and can produce rich, native applications that run unchanged across Windows, Mac OS X, Linux and more.
Pros
- battle-tested
Cons
- ugly
Platforms
- Linux, macOS, Windows
License
- BSD-like
Dead Projects
I list these simply to keep the list complete, and for fun. I wouldn’t recommend using dead projects in production.
Turbo Badger


It has no dependency on stl, RTTI or exceptions. Compiling without these features makes footprint very small. Utility classes (such as string, lists, hash table, etc.) are quite minimal for the basic needs of Turbo Badger itself.
Pros
- actually looks pretty decent
Cons
- dead
AntTweakBar


Cons
- sourceforge
- dead
MyGUI


The user interface is easy to use and uses delegates (Signals and slots) for easy to use event handling.
Pros
- last update 2015
Cons
- still dead
iupa2


The following screenshot should be self-explanatory.
Pros
- lol
- visionary
- magical
- unicorns
Cons
- “This project was born out of a fun coding session after a beer with a friend, use it at your own risk.”
Game GUI


Cons
- dead
- “The project was completed in about one month.”
Glam


Cons
- dead
- sourceforge
LibUFO


Most standard components (buttons, labels, menus, combo boxes, tab widgets, internal frames etc.) are included. Visual output is customizable via CSS (cascading style sheets) and style classes. Forms can be created via XUL (XML User interface Language, used by Firefox).
Cons
- very dead
- sourceforge
Visual Component Framework


Cons
- dead
GiGi


Cons
- sourceforge
- subversion
- dead
mGui


Pros
- supports DOS!
Cons
- I don’t know what to say really…
TOAD


Developed since 1995 and provides some interesting features but fails to compete with the manpower behind Gtk or Qt.
Pros
- cool name
Cons
- “Failed to compete with the manpower behind Gtk or Qt.”
- so very dead
Amulet


Pros
- damn that website is amazing
- horribly beautiful
- instant vaporwave theme
Cons
- none
aedGUI


Pros
- Great looking widgets!
Cons
- requires SDL
- dead
GLOW


GLOW is designed for write-once-compile-anywhere development, and should be source code compatible with any platform that supports OpenGL and GLUT.
Pros
- hardware rendering
Motif


Cons
- looks not so great
OpenGUI


Pros
- charming outdated UI? maybe?
- actually looks pretty good for it’s time
Cons
- download links don’t work anymore
PicoGUI


PicoGUI isn’t X, or X compatible. It’s a completely new GUI framework. It’s design goal is not compatibility with other GUIs, but to explore a unique architecture that especially benefits handheld computers and other embedded systems.
Pros
- might still be relevant for really low-spec embedded
Cons
- dead
SmartWin++


Cons
- windows only, listed since it’s dead
- dead
wGui


Pros
- no defines?
Cons
- requires SDL
WideStudio


Cons
- not english
- heavy framework
Xview


Pros
- won “best of the net april 1999”!
Cons
- must rip out my eyes after looking at the website
Yzone


Pros
- very colorful
- website is something to behold
Cons
- why?
- eyes hurt
- GNU
Vaca


Pros
- stl
Cons
- has passed away
TinyWidgets


Pros
- looks quite feature-full
Cons
- rip
OpenZinc


Pros
- OS/2!
- MS-DOS!
- Fast!
Cons
- rip
axlib
A toolkit to develop better C++ GUI cross-platform multimedia applications.
Pros
- c++14
Cons
- dead
ZooLib
ZooLib allows you build native applications for a variety of platforms and processors from a single code base, with little need for platform-specific source.
In the rare event non-portable code becomes necessary, it is simple and easy to include it inline via conditional compilation, using one of the provided preprocessor symbols.
Cons
- sourceforge
libnui
nui’s GUI system is based on 3D rendered dynamic layouts. Build your visual interface as a composition of widgets and behaviors, and then nui does the rest: positioning, resizing, anchoring, texture streching…
Cons
- dead
libRocket
libRocket is the C++ user interface package based on the HTML and CSS standards. It is designed as a complete solution for any project’s interface needs.
Cons
- dead
- super slow
nvidia-widgets
NVIDIA Widgets is the immediate mode graphical user interface toolkit used by the NVIDIA SDK samples.
Cons
- dead
- probably not production ready
Clutter
Clutter is a toolkit for creating compelling, dynamic, and portable graphical user interfaces. Clutter is free software, developed by the GNOME community.
Cons
- dead
GWEN
Abandoned: GWEN - GUI Without Extravagant Nonsense.
Pros
- the author updated the description to mark the project as abandoned
Cons
- abandoned
QuickGUI
QuickGUI is designed to be an easy to use, but efficient and powerful GUI library that works with Ogre3d. QuickGUI is being actively developed, and new versions are released every few months. QuickGUI is input injection based, and works with any input system. The code is clean and well documented which makes it easy to use and extend. There is added focus on skinning which makes it easy for users to customize their GUI’s appearance.
Cons
- mentions Ogre3D
- hosted by Ogre3D
- used with Ogre3D
- did I mention Ogre3D?
Whisper
Whisper is C++ application framework for the Mac and Windows. Unlike most frameworks it takes advantage of the standard library, design by contract, and modern C++ idioms.
Cons
- sourceforge
- dead
V
V is an easy to program, cross-platform C++ graphical user interface framework. V was designed to make it easier to write C++ graphical user interface applications regardless if they are commercial, shareware, or freeware. In addition to OS/2 it supports MS Windows 16 and 32 bit and Unix like operating system via X11, note that the OS/2 version is available in versions for native OS/2 and XFree86.
Cons
- 32 bits
Andrew
Andrew offers an extensible compound document architecture which can create and combine just about anything, from text to pictures to graphs to spreadsheets to figures, into a single document on your computer screen. The system was aptly presented in a series of articles published in the Linux Journal during 1994.
Pros
- Andrew Consortium