Qt (library)

from Wikipedia, the free encyclopedia
Qt

Qt logo
Basic data

developer Qt Project, Digia
Publishing year 1995
Current  version 5.15.0
( May 26, 2020 )
operating system Unix-like with X11 , Linux with Wayland , Windows , Windows Phone , Windows RT , Windows CE , Symbian OS (up to Qt 4.8), Android , SailfishOS , macOS , iOS , QNX / Blackberry 10
programming language C ++
category GUI toolkit
License Dual licensing system Proprietary and GPL Version 3 , LGPL Version 2.1 , LGPL Version 3
German speaking Yes
qt.io

Qt ([ kjuːt ] as English cute ) is an application framework and GUI toolkit for the cross-platform development of programs and graphical user interfaces . In addition, Qt offers extensive functions for internationalization as well as database functions and XML support and is available for a large number of operating systems and graphics platforms such as X11 ( Unix derivatives ), macOS , Windows , iOS and Android . Qt is used in particular by the KDE project in the libraries of the KDE Plasma Workspaces and the KDE Frameworks, which are also the most prominent showcase examples.

Qt is open source and has multiple licenses : for open source programming under the GNU General Public License (GPL) and from version 4.5 also under the GNU Lesser General Public License (LGPL); Commercial licenses are available for use in non-open source code.

Qt was developed in C ++ and uses a preprocessor called moc (meta object compiler), which extends C ++ with additional elements, for example signals and slots as well as introspection . The source text generated in this way follows the C ++ standard so that it can be translated using commercially available compilers. There are also connections for other programming languages, most of which are made available by the community or third-party providers, including Python (PyQt, PySide ), Ruby (QtRuby), C # (Qyoto Project, QtSharp), Java (Qt Jambi ), PHP (PHP-Qt), D (QtD), Haskell (Qtah), Perl (PerlQt), Pascal (Qt4Pas) and Ada (QtAda).

history

Beginnings and name development

Haavard Nord and Eirik Chambe-Eng started developing Qt in 1991. Three years later, they founded Quasar Technologies , which was later renamed Trolltech .

The name Qt comes from the fact that Haavard Nord's Q was particularly nice to look at in his Emacs and the t reminded of Xt (the X toolkit). Qt is officially pronounced like the English word cute . This word is supposed to express the developer's opinion that the source code and the API of Qt are cute , which in German means something like cute , pretty etc., but also smart .

date version
July 10, 1998 1.40
October 2, 1998 1.41
December 19, 1998 1.42
March 13, 1999 1.44
June 26, 1999 2.0
April 13, 2000 2.1
December 7, 2000 2.2
March 8, 2001 2.3
October 16, 2001 3
November 14, 2001 3.1
July 24, 2003 3.2
February 5, 2004 3.3
June 29, 2005 4th
December 20, 2005 4.1
October 4, 2006 4.2
May 30, 2007 4.3
May 6, 2008 4.4
March 3, 2009 4.5
December 1, 2009 4.6
September 21, 2010 4.7
December 15, 2011 4.8
March 28, 2012 4.8.1
May 22, 2012 4.8.2
September 13, 2012 4.8.3
November 29, 2012 4.8.4
2nd of July 2013 4.8.5
April 24, 2014 4.8.6
May 25, 2015 4.8.7
December 19, 2012 5.0.0
March 19, 2013 5.0.1
3rd July 2013 5.1.0
December 12th 2013 5.2.0
March 12, 2014 5.2.1
May 20, 2014 5.3.0
June 25, 2014 5.3.1
16th September 2014 5.3.2
December 10, 2014 5.4
February 24, 2015 5.4.1
June 12, 2015 5.4.2
July 1, 2015 5.5
15th October 2015 5.5.1
15th March 2016 5.6.0
June 8, 2016 5.6.1
August 8, 2016 5.6.2
October 8, 2016 5.6.3
June 16, 2016 5.7.0
December 13, 2016 5.7.1
23rd January 2017 5.8.0
May 31, 2017 5.9.0
June 30, 2017 5.9.1
October 6, 2017 5.9.2
22nd November 2017 5.9.3
23rd January 2018 5.9.4
April 12, 2018 5.9.5
June 11, 2018 5.9.6
7th December 2017 5.10.0
February 13, 2018 5.10.1
May 22, 2018 5.11.0
19th June 2018 5.11.1
20th September 2018 5.11.2
4th December 2018 5.11.3
December 6, 2018 5.12.0
1st February 2019 5.12.1
15th March 2019 5.12.2
17th April 2019 5.12.3
17th June 2019 5.12.4
1st February 2019 5.12.5
15th March 2019 5.12.6
17th April 2019 5.12.7
April 8, 2020 5.12.8
19th June 2019 5.13.0
5th September 2019 5.13.1
19th December 2019 5.14.0
January 27, 2020 5.14.1
April 1, 2020 5.14.2
May 26, 2020 5.15.0

Acquisitions by Nokia and Digia

At the beginning of 2008, Trolltech was bought by Nokia for 150 million US dollars and development in the Qt Development Frameworks division continued. In 2011 Nokia gave the project to the open source community as free software under the name Qt-Project and sold the commercial licensing business and service contracts to Digia for an undisclosed amount . In August 2012, the remaining parts, such as the server business and the development department, were handed over to Digia for € 4 million. In August 2014, Digia outsourced the development of Qt to a subsidiary called The Qt Company in order to reunite the development of the open source edition and the commercial editions , which had previously been taking place separately .

Licensing

Controversial arguments arose around 1998 when it became clear that KDE would establish itself as the standard Linux desktop . Because KDE is largely based on Qt, a large section of the open source and free software community was concerned that such an important part of the system was under commercial control. This led to two developments: Firstly, the Harmony Toolkit was developed, which exactly copied the functions of Qt, but was supposed to be under a free software license. Second, work began on the Gnome desktop environment , which was supposed to offer functions similar to KDE, but using the free toolkit GTK written in C.

Up to version 1.45 Trolltech used the FreeQt license for Qt. This was neither an open source nor a free license . Although it was allowed to look at the source code, modified versions were not allowed to be published. With the release of Version 2.0, Trolltech switched to the Q Public License (QPL), an open source license, which the Free Software Foundation classified as incompatible with the GPL . Then (in 1998) the KDE Free Qt Foundation was set up to prevent Qt from falling under a more restrictive license than the QPL in the event of a bankruptcy or takeover of Trolltech. It consists of two representatives each from Trolltech and KDE e. V., with the latter having a majority in cases of doubt . If Trolltech does not provide any updates for more than twelve months under an open source license, the “KDE Free Qt Foundation” is entitled to release the last free Qt version under the BSD license .

When the pressure on Trolltech increased and the Debian project refused to sell KDE due to licensing problems, Trolltech changed the license for the Linux variant of the toolkit in 2000. From version 2.2 onwards, the Linux variant was available under two licenses: the GPL and the QPL (see dual license system ).

However, the Windows version was still only available under a commercial license. The Mac OS X variant, published towards the end of 2001, was also only available under a commercial license until, in June 2003, Trolltech placed version 3.2 of the Mac OS X variant under the GPL. In February 2005, Trolltech finally announced that it wanted to put Qt from version 4.0 under the GPL for the Windows platform as well. This was confirmed when, in June 2005, Trolltech published a uniform dual license system for all supported platforms. Today there are proprietary and open source editions (GPL editions) for every platform.

Starting with version 4.3.1 of August 9, 2007, Trolltech grants exceptions to the open source version licensed by the GPL, which makes it possible to publish programs that use Qt under a non-GPL-compatible license. The licenses accepted are listed by name in a separate list. In addition, the source code of the Trolltech program must be made available to the same extent as it is available to other users, and the author's rights to discuss the program and make the source code available to everyone may not be granted to anyone Legal remedies (such as special contracts) are curtailed.

Since the beginning of 2008, the versions of Qt have also been published under the third version of the GPL.

Version 4.5 of Qt was first published under the LGPL in March 2009 . Thanks to the LGPL, it is possible to develop proprietary software with Qt even without a paid license, without having to publish the source code. Only if changes are made to the source code of Qt itself do these changes have to be published as source code. In addition, the license-related restrictions must be observed. For example, static links may only be used under strict conditions. The framework must also be used in its unchanged form.

Since September 2014, a low-cost edition of Qt called Indie Mobile has been offered, which made it possible to sell mobile applications created with Qt in sales portals such as Google Play and Apple's App Store , which due to technical restrictions and the terms of use of the sales portals is often not under the conditions of the LGPL is possible. In contrast to the more expensive commercial editions, the source code could only be used in unchanged form. However, with the release of Qt 5.5 in July 2015, the Indie Mobile Edition was discontinued.

Change history

Qt 4

With Qt 4.0 from June 28, 2005, Trolltech introduced five new technologies:

  • Tulip - A set of new container classes
  • Interview - An MVC Architecture for Element-Based Views
  • Arthur - A new 2D drawing framework
  • Scribe - Unicode text output with public API to support simple text layouts
  • MainWindow - A more modern main window architecture that enables toolbars, menus, and dockable windows

Qt 4.1 was released on December 19, 2005 and brought SVG tiny support, a PDF backend to the Qt printing system, and other extensions and improvements.

Qt 4.2 was released on October 4, 2006 and brought native CSS support for designing widgets. Qt 3.x's QCanvas classes for displaying two-dimensional graphic objects have also been replaced by a framework called QGraphicsView for rendering graphic objects on the screen.

Version 4.3 has been available since May 30, 2007. It brought expanded Windows Vista support, an improved OpenGL engine, and the ability to generate SVG files. An ECMAScript engine called QtScript and support for SSL connections have also been added.

Qt 4.4 was released on May 6, 2008. It includes support for Windows CE for the first time, uses WebKit as the HTML rendering engine and an improved API for programming multi-threaded applications.

The new Qt Creator development environment, Qt 4.5, has been available since March 3, 2009, with which applications for Linux, Mac OS X and Windows can be created without additional development tools.

Version 4.6 of Qt was released on December 1, 2009, which now also supports Multi-Touch and the Symbian OS and MeeGo platforms .

Version 4.7 has been available since September 21, 2010. With this version, the declarative Qt Meta Language or Qt Modeling Language ( QML ) finds its way into the library.

Version 4.8 of Qt was released on December 15, 2011. The new version offers the Qt Platform Abstraction , thread support for OpenGL and multithread support for HTTP as well as optimized file system access. This version has Long Term Support (LTS) and was only replaced by version 5.6 LTS in this.

Qt 5

Qt 5.0 was released on December 19, 2012. The new major version brings u. a. an OpenGL -based scene graph , which is supposed to accelerate the drawing of surfaces that are written in Qt's own programming language QML - also called Qt Meta Language or Qt Modeling Language . In addition, QtQuick has been expanded to include new options for graphic effects based on OpenGL and a canvas- based system for imperative drawing in QtQuick. For Linux, Qt 5 offers support for the newer Wayland in addition to the X Window System . The new version also offers functions for handling JSON and better support for IPv6 . The QtWebkit web rendering engine integrated in Qt should now have full support for HTML5 . The most important change, however, is the further modularization of the library, which should enable easier handling of the code and lower memory consumption for applications that only use special parts of the library. The further modularization in particular has the consequence that Qt 5.0 is not ABI and API compatible with Qt 4.8. However, an attempt was made to achieve the widest possible API compatibility, so the jump from Qt 4 to Qt 5 is not as big a break as the version jump 3 to 4.

Qt 5.1 was presented on July 3, 2013. Compared to the old version, 3000 improvements have been incorporated, and there is also temporary iOS and Android support. Their full support was completed in Qt 5.2. Qt 5.3 received experimental support for WinRT .

In version 5.4, the Qt WebEngine module based on Chromium was added for displaying websites, which is intended to replace the previously existing Qt Webkit module based on the WebKit engine. However, both engines should be supported in parallel up to at least Qt 6.0. In addition, WinRT is fully supported since this version.

In version 5.5 the division of the editions has been revised.

Version 5.6 provides 3 years of Long Term Support (LTS) and thus replaces Qt 4.8 LTS. High-dpi in user interfaces and support for Windows 10 and OSX 10.11 as well as OpenGL ES 3 are the focus of the improvements. Support for 5.6 LTS ended in March 2019.

Version 5.7, published on June 16, 2016, was based entirely on C ++ 11 . In addition, the multithreading 3D engine Qt 3D, which was previously only available as a technical preview , has been added.

Version 5.8, which was presented on January 23, 2017, contained the most important change in a new graphics architecture that decoupled the Qt-Quick module from the OpenGL graphics library . The Qt-Lite project was also introduced. This is a project that primarily focuses on the development of end devices with little memory.

In version 5.9, which was published on May 31, 2017, the Qt gamepad module was introduced, which is supposed to enable direct access to game control devices and was previously only available as a preview. This version received 3 years of Long Term Support (LTS), which ended on May 31, 2020.

The Vulkan API was supported for the first time with Qt 5.10 . In addition, new speech and handwriting recognition has been added to the Qt Virtual Keyboard, support for OAuth 1 and OAuth 2 and text-to-speech functionality.

Version 5.11 was released on May 22, 2018. The compiler pipeline for the Qt QML Engine, which reads and compiles the code of the Qt Meta-object Language (QML), was completely rewritten. According to the developers, this change would result in a major speed advantage. Qt for Python 5.11 was also released in the course of the release . This is a revision of PySide 2 by the Qt Company.

Version 5.12 was released on December 6, 2018. It is a Long Term Support (LTS) version that will be supported for three years.

Qt 6

Qt 6 is scheduled to appear at the end of 2020.

Supported Platforms

There are currently the following variants of the Qt framework:

  • Qt for Linux / X11 - Qt for the X Window System , which runs under Unix and Unix derivatives such as Linux , AIX , HP-UX and Solaris .
  • Qt for Linux / Wayland - Qt for the Wayland display server under Linux.
  • Qt for Windows - Qt for Windows (XP and newer). 32 and 64 bit versions are available for the Microsoft Visual Studio C ++ compiler. The MinGW variant is still only available as a 32-bit version.
  • Qt for Windows RT - As of Qt 5.3, Windows RT , including Windows Phone , is also supported.
  • Qt for OS X / Cocoa - Qt for Apple's macOS desktop operating system and the Cocoa framework. OS X version 10.7 or higher is fully supported. OS X 10.6 is supported with restrictions.
  • Qt for embedded Linux (formerly Qtopia Core, formerly Qt / Embedded ) - With Qt / Embedded, Trolltech presented a variant that uses the Linux framebuffer instead of the X window system. This is mainly used in embedded Linux-based devices, for example on PDAs , smartphones and embedded Linux .
  • Qt for Windows CE - Qt for Windows CE and Windows Mobile
  • Qt for iOS - Qt for Apple's mobile operating system iOS (since Qt 5.2)
  • Qt for Android - Qt for Android (since Qt 5.2)
  • Qt for Sailfish OS - Qt for Jolla's mobile operating system Sailfish OS
  • Qt for QNX / BlackBerry 10 - Qt for the real-time operating system QNX and for Blackberry 10 , which is based on QNX.
  • The commercial Enterprise Edition also supports the real-time operating systems VxWorks and Integrity .

With newer versions of Qt, support for some platforms has been discontinued. This includes:

  • Qt for the Symbian platform - With Qt 5, support for Nokia's Symbian smartphone operating system has been discontinued.
  • Qt for OS X / Carbon - OS X's carbon framework is no longer supported since Qt 5.
  • Qt for Maemo - Qt for Nokia's Maemo smartphone operating system (only unofficial since Qt 5)
  • In addition to the Qt Toolkit, there was also Qt Extended (formerly Qtopia), a PDA and smartphone platform based on Qt / Embedded. She was best known for the Zaurus PDA from Sharp . However, development was stopped on March 3, 2009 in order not to run parallel development alongside Qt.

External ports

After Nokia published the Qt source code, various ports were created for the following platforms, some of which are still very experimental: OpenSolaris , Haiku , OS / 2 eCS platform , AmigaOS  4, HP webOS ( Palm Pre ), Amazon Kindle DX .

Editions

The editions Qt Open Source , Qt for Application Development and Qt for Device Creation are currently available . The Qt Open Source Edition can also be used for commercial purposes free of charge under the terms of the GPL or LGPL. There are monthly fees for the use of the remaining editions, but buyers of these editions are granted additional freedom. This allows changes to be made to Qt without having to be published. In addition, the commercial editions contain official product support from the manufacturer of Qt.

Up to and including version 4.4, Qt Console (for developing programs without a GUI ), Qt Desktop Light (lacking network, database and OpenGL support, as well as Graphics View), Qt Desktop (the full library) and the Open Source Edition (the complete library for developing open source applications). This division no longer exists today.

From other providers

Since Qt is Free Software , there are also editions from other providers:

  • Qt / Windows Free Edition - The KDE / Cygwin project worked on a native Windows version of Qt 3, with a view to KDE, which has been ported from the free source code of the Qt / X11 variant and is therefore fully GPL licensed. The project was started in order to be able to program free software for Windows. With the appearance of Qt 4, this endeavor has lost some of its attention and is only maintained by the qtwin project with smaller patches. In the future, the project will continue to seek patches for the Qt Open Source Edition of Qt Development Frameworks, so that these then also support other compilers ( Microsoft , Borland and Embarcadero Technologies ).
  • The Trinity project , which is developing a spin-off from KDE 3 , maintains a spin-off from Qt 3 and has been the central point of contact for Qt 3 development since November 2011, after Nokia stopped development., Knut Yrvin refers from Nokia's side , Community Manager at Trolltech / Nokia on Trinity.

design

The Qt build system in detail in a UML- like representation

Library structure

From version 4 the entire library is divided into modules, which means that smaller and faster programs are possible, since only the modules used have to be integrated. In version 5, the modularization was pushed further, and a distinction is now made between Qt Essentials (basic components) and Qt Add-Ons (additional modules for special purposes).

The following modules are included in Qt Essentials :

  • Qt Core - core classes used by all other modules
  • Qt Gui - base classes for designing graphical user interfaces ( GUIs ), includes support for OpenGL
  • Qt Widgets - Components for creating GUIs in the C ++ programming language
  • Qt QML - classes for processing the scripting languages QML and JavaScript
  • Qt Quick - Components for creating GUIs through QML
  • Qt Network - Network programming classes
  • Qt Multimedia - Low-level access to multimedia devices and files
  • Qt Multimedia Widgets - Access to multimedia devices and files through widgets
  • Qt Sql - class for database integration with SQL
  • Qt Test - Tools for testing your own applications
  • Qt WebKit - Classes for displaying web pages, based on the WebKit engine

The Qt add-ons include modules for additional image formats ( Qt SVG / Qt Image Formats ), modules for accessing hardware in smartphones and tablets ( Qt Bluetooth / Qt NFC / Qt Sensors ), as well as the Qt module presented in version 5.4 WebEngine for displaying websites based on the Chromium engine.

In the commercial editions - depending on the edition - additional modules are included, e.g. for the visualization of data ( Qt Charts / Qt Data Visualization ).

Programming example

The following example creates a window with a title which, however, is hidden due to the small window size, a label area ( Label ) and a button ( Button ). The functions are linked by means of "signals" and "slots" so that the program is terminated when the button is clicked. The two widgets are then drawn in the background and the window is finally displayed. The sample program is qmake -project && qmake && makecompiled when called from within the folder in which the file is located.

The result of the sample program
#include <QtGui>

int main(int argc, char **argv) {
	// Eine QApplication stellt immer die Basis dar
	QApplication app(argc, argv);

	// Ein Fenster mit einem Titel erzeugen
	QWidget window;
	window.setWindowTitle("Qt4-Example");

	// Ein Label mit einem Text erzeugen
	QLabel *label = new QLabel("Hello World!");
	label->setAlignment(Qt::AlignCenter);

	// Eine Schaltfläche mit Tastenkürzel Alt-E erzeugen, welche die Anwendung beendet
	QPushButton *button = new QPushButton("&Exit");
	QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));

	// Sowohl das Label als auch die Schaltfläche vertikal ausrichten
	QVBoxLayout *layout = new QVBoxLayout;
	layout->addWidget(label);
	layout->addWidget(button);
	window.setLayout(layout);

	// Das Fenster anzeigen, die Anwendung starten und ihr Ergebnis (an das Betriebssystem) zurückliefern
	window.show();
	return app.exec();
}

User interfaces can either be programmed explicitly with Qt or designed with the Qt Designer .

Signal slot concept

A special feature is the use of "signals" and "slots" , which enable communication between individual objects in a simple manner. An object sends (emits) a signal, which leads to a method of another object being called if this is registered as a receiver (slot). The concept can be viewed as an application of the observer design pattern.

In contrast to the use of function pointers or callback functions , the concept of Qt enables loose coupling between modules; H. The caller and the called object do not necessarily have to know each other. This means that the objects involved can be kept completely independent of one another. Another advantage is the guarantee of type safety and thread safety . In terms of execution speed, however, calling a method using signals and slots is slightly slower than calling using the callback function.

Before Qt 5, the type safety of call parameters was only checked at runtime. With the introduction of Qt 5, an alternative method was introduced that can do this at compile time . The lambda expressions known from the C ++ 11 standard can now also be used as slots.

// Die alte connect Methode
QObject::connect(button, SIGNAL(clicked()), this, SLOT(pushButtonClicked());

// Die neue Variante
QObject::connect(button, &QPushButton::clicked, this, &ExampleObject::pushButtonClicked, Qt::AutoConnection);

// Verwendung einer Lambda-Funktion (C++11) als Slot
QObject::connect(sender, &QObject::destroyed, [=](){ ... });

The last call parameter of the example "new variant" deserves attention. Cross-thread communication can be influenced by the optional specification of the connection type .

Connection type / behavior Synchronous Asynchronous
AutoConnection (default) Yes Yes
DirectConnection Yes No
QueuedConnection No Yes
BlockingQueuedConnection No Yes
UniqueConnection Yes Yes

AutoConnection is used by default. If the sender and receiver are in the same thread, this variant behaves like DirectConnection. Otherwise QueuedConnection is used. This dynamic decision also takes place with UniqueConnection, but only one slot is allowed for a signal. BlockingQueuedConnection waits for the slot in the other thread to be completely processed and can therefore lead to a deadlock situation if both are in the same thread.

GUI simulation

Until the latest version, Qt used its own drawing engine and controls. It simulated the different appearance on the different platforms ( GUI simulation ). This made porting easier, as very few classes in Qt were dependent on the platform used. The downside, however, was that Qt had to precisely mimic the look of each platform, which wasn't always possible. Since Qt 4.0, however, there has been the option (as in many other toolkits, e.g. wxWidgets or SWT ) to use the operating system's own routines to draw the elements. So there are now the native QWindowsVistaStyle, QWindowsXPStyle and the QMacStyle. These "styles" only work on the appropriate operating system (and are also the standard there). However, there are still platform-independent “styles” that can be easily activated (e.g. via the command line). Starting with version 5.0, a uniform fallback style called Fusion was introduced.

Tools

The Qt Designer in version 4.3.4

In addition to the libraries, Qt contains a number of additional utilities, some of which are indispensable for working with Qt.

  • The following programs are used by the programmer to edit the files of a Qt project under a convenient user interface:
    • Qt Creator - integrated development environment for forms, source code and project files
    • Qt Designer - for creating forms (* .ui (XML)) and resource files (* .qrc (XML))
    • Qt Linguist - for translations of the program (* .ts (XML))
  • The following programs enable easy translation. The Qt project file is used for control:
    • lupdate - Extracts the strings to be translated from all source code files (→ * .ts (XML))
    • lrelease - * .ts (XML) → * .qm
    • lconvert - Converts between * .po, * .ts, * .xlf and * .qm files
  • qmake - Creates a Makefile with the Qt project file (* .pro), which controls the creation process. In addition to the usual programs such as compilers and linkers, the following programs are also used:
    • moc - Meta-Object-Compiler, creates meta-information about classes of the program (* .h → moc _ *. cpp), see below.
    • uic - user interface compiler, creates C ++ source code from UI files (* .ui (XML) → ui _ *. h)
    • rcc - Resource Compiler (* .qrc (XML) → qrc _ *. cpp)

For using the online documentation is Qt Assistant uses that can be integrated into your own projects.

Meta-Object Compiler

The meta-object compiler , also known as moc , is a tool that examines the header files of a project and collects meta-information about classes and other program parts. This is done with the help of "markings" which are later removed by the standard preprocessor. From this information he in turn creates C ++ code in which functions are implemented that are not available in C ++ without additional libraries, such as introspection and the signal-slot concept . Further macros are expanded in header files that you have written yourself in order to provide their function declarations.

The use of an additional tool was criticized by some of the C ++ programmers. They claimed that Qt programming was no longer C ++ programming. In fact, the implementation is based on C macros , which are known not to be type-safe and which contaminate the namespace . From Trolltech's point of view, this is necessary to elegantly implement the signal slot concept. When Qt 1.x was released, the compiler differences with regard to generic programming were still too great to be able to rely on template classes . The contamination of the namespace can also be avoided by using the QT_NO_KEYWORDS macro .

Other connections

The following table shows the connections for different programming languages:

Qt voice connections
Programming
language
Name / description Qt4 Qt5 Open
source
development license

Proprietary
Development License
Ada QtAda Yes No GPL GMGPL
C ++ Qt (native C ++) Yes Yes LGPL LGPL or
proprietary license
C # & .NET Qyoto - development discontinued Yes No LGPL
QtSharp - Currently under development unknown Yes Apache license , version 2.0
qt4dotnet Yes No LGPL
D. QtD Yes No Boost Software License + GPL
Go Go QML - connection to QML No Yes LGPL
Haskell HsQML - connection to QML Yes (up to HsQML 0.2.0.3) yes (from HsQML 0.3) BSD license
Java Qt Jambi - Was initially developed by Qt Software itself. As of version 4.5, further development is left to the community. Yes No LGPL
Lisp CommonQt - bindings for Common Lisp Yes No BSD license
Lua lqt Yes No MIT license
Pascal Free Pascal Qt4 binding Yes Yes (as alpha version ) LGPL
Pearl PerlQt4 Yes No GPL No
PHP PHP-Qt Yes No GPL No
python PyQt Yes Yes GPL Proprietary license
PySide - Developed by Nokia itself as PyQt was not published under the LGPL. Yes No LGPL
PySide2 - Qt5 port of PySide No Yes LGPL
PyOtherSide - connection to QML No Yes ISC license
QML QtQuick - Is part of Qt from version 4.7 Yes Yes LGPL LGPL or
proprietary license
R. qtinterfaces Yes No GPL No
ring RingQt No Yes MIT license
Ruby QtRuby Yes No LGPL
ruby-qml - connection to QML / Qt Quick No Yes MIT license
Programming
language
Name / description Qt4 Qt5 Open
source
development license

Proprietary
Development License

Usage examples

The KDE Plasma Workspaces can be seen as the largest and most prominent software project based on Qt. In addition, the library is also widely used in other areas of application.

multimedia

science and technology

communication

Games

Other uses

See also

Web links

Commons : Qt  - collection of images, videos and audio files
Wikibooks: Qt for C ++ Beginners  - Learning and Teaching Materials

Individual evidence

  1. qt-project.org .
  2. www.digia.com .
  3. Qt 5.15 LTS Released . May 26, 2020 (accessed June 1, 2020).
  4. a b Michael Larabel: Qt 5.0 Is Going To Like LLVMpipe, Wayland. phoronix.com, May 8, 2012, accessed June 29, 2014 .
  5. ^ Support for Symbian. June 25, 2014, accessed March 14, 2015 .
  6. a b Symbian support is going to be removed in Qt 5.0! February 1, 2012, accessed March 16, 2015 .
  7. ^ A b Community Supported Platforms. Retrieved March 13, 2015 .
  8. ^ Qt Licensing. Retrieved March 13, 2015 .
  9. Adding LGPL v3 to Qt. August 20, 2014, accessed March 30, 2015 .
  10. a b Ashlee Vance: That Smartphone Is So Qt. February 16, 2010, accessed March 13, 2015 .
  11. Jasmin Blanchette, Mark Summerfield: C ++ GUI Programming with Qt 4th page XV, ISBN 0-13-187249-4 .
  12. wiki.qt.io
  13. wiki.qt.io
  14. wiki.qt.io
  15. wiki.qt.io
  16. wiki.qt.io
  17. Lars Knoll: Qt 5.8 released , January 23, 2017.
  18. Lars Knoll: Qt 5.9 released , May 31, 2017.
  19. Jani Heikkinen: Qt 5.9.1 released , June 30, 2017.
  20. Tuukka Turunen: Qt 5.9.2 released , October 6, 2017.
  21. Tuukka Turunen: Qt 5.9.3 released , November 22, 2017.
  22. blog.qt.io
  23. blog.qt.io
  24. blog.qt.io
  25. Lars Knoll: Qt 5.10 released , December 7, 2017.
  26. Qt 5.10.1 Released - Qt Blog . In: Qt Blog . February 13, 2018 ( qt.io [accessed March 19, 2018]).
  27. Lars Knoll: Qt 5.11 released , May 22, 2018.
  28. Jani Heikkinen: Qt 5.11.1 released , June 19, 2018.
  29. wiki.qt.io
  30. phoronix.com
  31. blog.qt.io
  32. blog.qt.io
  33. blog.qt.io
  34. blog.qt.io
  35. blog.qt.io
  36. blog.qt.io
  37. qt.io
  38. qt.io
  39. qt.io
  40. qt.io
  41. blog.qt.io
  42. qt.io
  43. qt.io
  44. qt.io
  45. qt.io
  46. qt.io
  47. a b Louis Goddard: Digia to pay Nokia € 4 million for Qt as framework heads towards cross-platform future. theverge.com, August 10, 2012, accessed August 11, 2012 .
  48. Alexander Neumann: Nokia is taking a step towards “real” open source development with Qt Project. heise.de, October 24, 2011, accessed on July 11, 2012 .
  49. ^ Digia to acquire Qt commercial licensing business from Nokia. (No longer available online.) March 7, 2011, archived from the original on April 2, 2015 ; accessed on March 13, 2015 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / www.digia.com
  50. Alexander Neumann: Digia takes over Nokia's remaining Qt activities. In: heise online. August 9, 2012, accessed June 28, 2014 .
  51. Qt business becomes subsidiary of Digia. August 7, 2014, accessed July 2, 2015 .
  52. ^ KDE Free Qt Foundation. kde.org, accessed April 3, 2010 .
  53. ^ Joseph Carter: Why Debian Doesn't Include KDE. June 17, 2000, accessed March 13, 2015 .
  54. Trolltech to Extend Dual Licensing to Qt for Windows ( Memento from August 12, 2011 in the Internet Archive )
  55. Nokia Corporation Qt GPL Exception Version 1.3. (No longer available online.) Archived from the original on April 2, 2015 ; accessed on March 13, 2015 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / doc.qt.digia.com
  56. Oliver Lau: More open source licenses for Qt. In: heise online . August 9, 2007, accessed April 3, 2010 .
  57. Angela Meyer: Qt can now also be licensed under GPLv3. In: heise online. January 19, 2008, accessed April 3, 2010 .
  58. Qt 4.5, Qt Creator released ( Memento from August 12, 2011 in the Internet Archive )
  59. Using the Digia Qt Framework (LGPL) for “commercial” applications. baltazaar, July 20, 2013, accessed June 29, 2014 .
  60. Mika Pälsi: Benefits of the Indie Mobile Licensing. October 1, 2014, accessed March 23, 2015 .
  61. Turunen Tuukka: Indie Mobil Program terminated? Qt Interest mailing list, July 2, 2015, accessed July 2, 2015 .
  62. Trolltech Releases Qt 4.1. (No longer available online.) December 20, 2005, archived from the original on August 18, 2009 ; accessed on April 3, 2010 (English). Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / qt.nokia.com
  63. Trolltech Brings Style Sheets to Desktop Applications with Qt 4.2. (No longer available online.) October 4, 2006, formerly in the original ; accessed on April 3, 2010 (English).  ( Page no longer available , search in web archivesInfo: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.@1@ 2Template: Dead Link / qt.nokia.com  
  64. Trolltech Releases Qt and Qtopia Core 4.3. (No longer available online.) May 30, 2007, formerly in the original ; accessed on April 3, 2010 (English).  ( Page no longer available , search in web archivesInfo: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.@1@ 2Template: Dead Link / qt.nokia.com  
  65. Qt 4.4 Framework Broadens Rich Application Development with Integration of Web Content and Portability to Mobile Devices. (No longer available online.) May 6, 2008, formerly in the original ; accessed on April 3, 2010 (English).  ( Page no longer available , search in web archivesInfo: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.@1@ 2Template: Dead Link / qt.nokia.com  
  66. Alexander Neumann: Qt 4.5 and development environment Qt Creator released. In: heise online. March 3, 2009, accessed April 3, 2010 .
  67. Nokia Releases Qt 4.6. (No longer available online.) December 1, 2009, archived from the original on December 4, 2009 ; accessed on April 3, 2010 (English). Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / qt.nokia.com
  68. Nokia Releases Qt 4.7. (No longer available online.) September 21, 2010, archived from the original on September 26, 2010 ; accessed on September 26, 2010 (English). Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / qt.nokia.com
  69. Nokia Releases Qt 4.8. December 15, 2011, accessed December 15, 2011 .
  70. heise.de
  71. Julia Schmidt: Reorganized: Qt 5.0 is ready. heise.de, December 20, 2012, accessed on December 22, 2012 .
  72. a b What’s New in Qt 5. Retrieved on September 2, 2015 (English).
  73. Digia releases Qt 5.1. (No longer available online.) July 3, 2013, archived from the original on April 2, 2015 ; accessed on March 14, 2015 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / www.digia.com
  74. Matthias Nagorni: Qt Developer Days Europe: Where is Qt heading? heise.de, October 31, 2014, accessed on March 14, 2015 .
  75. Qt Documentation - What's New in Qt 5.4. Retrieved March 14, 2015 .
  76. C ++ class library Qt 5.5: focus on stability and performance. heise.de, July 2, 2015, accessed on July 2, 2015 .
  77. heise.de
  78. blog.qt.io
  79. Qt 5.7 is completely based on C ++ 11. March 14, 2016, accessed August 17, 2018 .
  80. Qt 5.7 release. Retrieved August 17, 2018 .
  81. Qt 5.8 published: Lean approach for the class library. January 23, 2017. Retrieved August 17, 2018 .
  82. Qt 5.8 release. Retrieved August 17, 2018 .
  83. C ++ framework: Qt 5.9 released as a new long-time support release. June 1, 2017, accessed August 17, 2018 .
  84. Qt 5.9 release. Retrieved August 17, 2018 .
  85. blog.qt.io
  86. Qt 5.10 Beta: Off to the volcano. October 10, 2017, accessed August 17, 2018 .
  87. Qt 5.10 release. Retrieved August 17, 2018 .
  88. Qt 5.11 release. Retrieved August 17, 2018 .
  89. Qt 5.11: More accessibility under Windows. May 22, 2018. Retrieved August 17, 2018 .
  90. Qt for Python 5.11 is ready. June 14, 2018, accessed August 17, 2018 .
  91. blog.qt.io
  92. heise.de
  93. a b Download Qt. Accessed March 16, 2015 .
  94. Qt-5-on-Nokia-N9. Accessed March 16, 2015 .
  95. Qt Software discontinues Qt Extended ( Memento of March 8, 2009 in the Internet Archive )
  96. KDE on OpenSolaris ( Memento of the original from February 20, 2010 in the Internet Archive ) Info: The archive link was automatically inserted and not yet checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / hub.opensolaris.org
  97. ^ Qt Applications and UI Framework for Haiku
  98. Qt 4 Application and UI Framework for eCS
  99. OS4Depot page for "First Alpha release of Qt 4.7 for AmigaOS Native"
  100. Qt webOS port  ( page no longer available , search in web archivesInfo: The link was automatically marked as defective. Please check the link according to the instructions and then remove this notice.@1@ 2Template: Dead Link / gitorious.org  
  101. Blog: Qt on the Palm Pre
  102. Blog: Qt on Amazon Kindle DX
  103. Sebastian Grüner: Updates for KDE SC 4.7 and KDE 3.5. golem.de, March 11, 2011, accessed on March 14, 2015 .
  104. Open Linux developer phone opens up more . (No longer available online.) Linuxfordevices.com, March 5, 2007, archived from the original on December 24, 2013 ; accessed on July 10, 2012 . Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / archive.linuxgizmos.com
  105. Knut Yrvin on Qt Blog (originally Qt Labs). January 16, 2012, accessed March 14, 2015 .
  106. Trolltech Releases Qt 4.0. June 28, 2005, accessed on March 26, 2015 (English): "Unlike previous Qt releases, Qt 4 is a collection of smaller libraries [...]"
  107. Signals & Slots. Retrieved September 2, 2015 .
  108. Threads and QObjects. Retrieved September 2, 2015 .
  109. Qt Blog - Cleaning up styles in Qt5 and adding Fusion
  110. Qt Software to discontinue Qt Jambi after 4.5 release ( Memento from August 7, 2011 in the Internet Archive )
  111. Language Bindings - Qt Wiki. Retrieved December 7, 2016 .
  112. Applications Using QtWebKit . Qt Wiki
  113. Qt in the ESA. ( Memento from July 23, 2011 in the Internet Archive )