Qt (framework)


Qt (pronounced "cute") is a
widget toolkitA widget toolkit, widget library, GUI toolkit, or UX library is a library A library is a collection of materials, books or media that are easily accessible for use and not just for display purposes. It is responsible for housing updated informa ...
for creating
graphical user interfaces The graphical user interface (GUI "UI" by itself is still usually pronounced . or ) is a form of user interface 300px, The Reactable, an example of a tangible user interface ">tangible_user_interface.html" ;"title="Reactable, an example of a ...
as well as
cross-platform In computing Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithm of an algorithm (Euclid's algorithm) for calculating the greatest commo ...

applications Application may refer to: Mathematics and computing * Application software, computer software designed to help the user to perform specific tasks ** Application layer, an abstraction layer that specifies protocols and interface methods used in a co ...
that run on various software and hardware platforms such as
Linux Linux ( or ) is a family of open-source Unix-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to a ...

Windows Microsoft Windows, commonly referred to as Windows, is a group of several proprietary {{Short pages monitor * Electrum, a lightweight bitcoin client * FreeMat free open source numerical computing environment * Gambas free open source BASIC integrated development environment * Google Earth * Heimer, an open-source mind map, diagram, and note-taking tool * Igor Pro, a data analysis software * Krita graphics editing and digital painting software * LMMS, a cross-platform music production software * Mathematica, a mathematical symbolic computation program, sometimes termed a computer algebra system or program, used in many scientific, engineering, mathematical, and computing fields. * Moonlight Stream, an open-source implementation of Nvidia Shield * Musescore, an open-source, multiplatform notation software * Open Broadcaster Software, OBS, a libre cross-platform screencast software * Orange (software), Orange data mining suite * qBittorrent cross-platform free and open-source BitTorrent client * QGIS geographic information system * Qtractor Audio multitrack recorder and editing software * QuiteRSS Feed Reader * Retroshare F2F communication platform * Roblox#Roblox Studio, Roblox Studio a game creation tool used on the Roblox platform * Scribus desktop publishing software * Sibelius (software), Sibelius music composition and notation software * Source 2 engine tools a 3D video game engine developed by Valve Corporation, Valve * Stellarium (software), Stellarium, a planetarium program * Subsurface (software), Subsurface, a software for logging and planning scuba dives initially designed and developed by Linus Torvalds * SuperCollider, an environment and programming language for real-time audio synthesis and algorithmic composition * Teamviewer, a computer software package for remote control, desktop sharing, online meetings, web conferencing and file transfer between computers * Telegram (software), Telegram, a messaging client available for Windows, Mac and Linux * VirtualBox OS virtualization software * VLC media player * Wireshark, a packet analyzer * WPS Office * XaoS, a real-time fractal zoomer * XnView MP

Organizations using Qt

Qt is utilized by a wide range of companies and organizations such as * AMD * Blizzard Entertainment * BMW * Crytek * Daimler AG * Electronic Arts * European Space Agency * DreamWorks Pictures, DreamWorks * LG * Lucasfilm * Microsoft * Panasonic * Philips * Robert Bosch GmbH * Samsung * Siemens * Tesla, Inc., Tesla * Tomtom * Volvo * Deutsche Flugsicherung, German Air Traffic Control * HP Inc., HP * Walt Disney Animation Studios * Valve Corporation, Valve

Qt software architecture

Qt concepts

Qt is built on these key concepts: ;Complete abstraction of the GUI: When first released, Qt used its own paint engine and controls, emulating the look of the different platforms it runs on when it drew its widgets. This made the porting work easier because very few classes in Qt really depended on the target platform; however, this occasionally led to slight discrepancies where that emulation was imperfect. Recent versions of Qt use the native style APIs of the different platforms, on platforms that have a native widget set, to query metrics and draw most controls, and do not suffer from such issues as often. On some platforms (such as MeeGo and KDE) Qt ''is'' the native API. Some other portable graphical toolkits have made different design decisions; for example, wxWidgets uses the toolkits of the target platform for its implementations. ;Signals and slots: A language construct introduced in Qt (toolkit), Qt for communication between objects which makes it easy to implement the observer pattern while avoiding boilerplate code. The concept is that GUI GUI widget, widgets can send signals containing event information which can be received by other controls using special functions known as slots. ;Meta-object System, Metaobject compiler: The metaobject compiler, termed ''moc'', is a tool that is run on the sources of a Qt program. It interprets certain macros from the C++ code as annotations, and uses them to code generator, generate added C++ code with meta information about the classes used in the program. This meta information is used by Qt to Greenspun's tenth rule, provide programming features not available natively in C++: signals and slots, Type introspection, introspection and asynchronous function calls. ;Language bindings:Qt can be used in several programming languages other than C++, such as Python, Javascript, C# and Rust via language bindings; many languages have list of language bindings for Qt 5, bindings for Qt 5 and list of language bindings for Qt 4, bindings for Qt 4. The Ring programming language includes Qt in the standard library.

Qt modules

Starting with Qt 4.0 the framework was split into individual modules. With Qt 5.0 the architecture was modularized even further. Qt is now split into ''essential'' and ''add-on'' modules.

Qt essentials

Qt add-ons


There are four editions of Qt available: ''Community'', ''Indie Mobile'', ''Professional'' and ''Enterprise''. The Community version is under the open source licenses, while the Indie Mobile, Professional and Enterprise versions, which contain additional functionality and libraries, e.g. Enterprise Controls are commercially sold by The Qt Company.

Supported platforms

Qt works on many different platforms; the following are officially supported: After Nokia opened the Qt source code to the community on Gitorious, various ports appeared. There are also some ports of Qt that may be available, but are not supported anymore. These platforms are listed in List of platforms supported by Qt. See also there for current community support for other lesser known platforms, such as SailfishOS.


Qt is available under the following free software licenses: GNU General Public License#Version 2, GPL 2.0, GNU General Public License#Version 3, GPL 3.0, GNU Lesser General Public License, LGPL 3.0 and GNU Lesser General Public License, LGPL 2.1 (with Qt special exception). Note that some modules are available only under a GPL license, which means that applications which link to these modules need to comply with that license. In addition, Qt has always been available under a commercial license, like the Qt Commercial License, that allows developing proprietary applications with no restrictions on licensing.

Qt tools

Qt comes with its own set of tools to ease cross-platform development, which can otherwise be cumbersome due to different set of development tools. Qt Creator is a cross-platform Integrated development environment, IDE for C++ and QML. Qt Creator#History, Qt Designer's GUI layout/design functionality is integrated into the IDE, although Qt Designer can still be started as a standalone tool. In addition to Qt Creator, Qt provides qmake, a cross-platform Build Automation, build script generation tool that automates the generation of Makefiles for development projects across different platforms. There are other tools available in Qt, including the Qt Designer interface builder and the Qt Assistant help browser (which are both embedded in Qt Creator), the Qt Linguist translation tool, uic (user interface compiler), and moc (Meta-Object Compiler).

History of Qt

Early developments

In the summer of 1990, Haavard Nord and Eirik Chambe-Eng (the original developers of Qt and the CEO and President, respectively, of Trolltech) were working together on a database application for ultrasound images written in C++ and running on Classic Mac OS, Mac OS, Unix, and Microsoft Windows. They began development of "Qt" in 1991, three years before the company was incorporated as Quasar Technologies, then changed the name to Troll Tech and then to Trolltech. The toolkit was called Qt because the letter Q looked appealing in Haavard's Emacs typeface, and "t" was inspired by X Toolkit Intrinsics, Xt, the X toolkit. The first two versions of Qt had only two flavors: Qt/X11 for Unix and Qt/Windows for Windows. On 20 May 1995 Troll Tech publicly released Qt 0.90 for X11/Linux with the source code under the ''Qt Free Edition License''. This license was viewed as not compliant with the free software definition by Free Software Foundation because, while the source was available, it did not allow the redistribution of modified versions. Trolltech used this license until version 1.45. Controversy erupted around 1998 when it became clear that the K Desktop Environment 1, K Desktop Environment was going to become one of the leading desktop environments for Linux. As it was based on Qt, many people in the free software movement worried that an essential piece of one of their major operating systems would be proprietary. The Windows platform was available only under a proprietary license, which meant free/open source applications written in Qt for X11 could not be ported to Windows without purchasing the proprietary edition.

Becoming free software–friendly

With the release of version 2.0 of the toolkit in mid-1999, the license was changed to the Q Public License (QPL), a free software license, but one regarded by the Free Software Foundation as incompatible with the GPL. Compromises were sought between KDE and Trolltech whereby Qt would not be able to fall under a more restrictive license than the QPL, even if Trolltech was bought out or went bankrupt. This led to the creation of the KDE Free Qt foundation, which guarantees that Qt would fall under a BSD-style license should no free/open source version of Qt be released during 12 months. In 2000, Qt/X11 2.2 was released under the GPL v2, ending all controversy regarding License compatibility, GPL compatibility. At the end of 2001, Trolltech released Qt 3.0, which added support for Mac OS X (now known as
macOS macOS (; previously Mac OS X and later OS X) is a proprietary {{Short pages monitor