A curated list of awesome tools, libraries, and resources for the Qt framework.
Qt is a powerful cross-platform application development framework, for use primarily (but not exclusively) in C++. It's great for GUI applications, but can be used for many other things as well.
Contributions are welcome!
Conventions
Any list item with an OctoCat :octocat: has a GitHub repo or organization; click on it to see the source code!
List items with this :package: icon have source code hosted elsewhere.
If you build it, they will come. This section describes aggregations of Qt users who share knowledge and code with one another. The most popular and active communities are listed in this section, but you can find a more comprehensive list here (that includes several in other languages) if you'd prefer.
For real-time chat with other Qt developers and users. The most popular channels are on Freenode, and include `#qt`, `#qt-quick`, `#qt-creator`, and `#qt-chat`.
For a full list of Qt-related IRC channels, see here.
Note that the linked webchat client is not a part of the Qt project, and is provided by the author of this list for convenience only. These channels can be accessed through any IRC client.
Not to be confused with the official [Qt forum](https://forum.qt.io).
Tools
A good developer writes his or her own tools. A great one uses tools others wrote. This section will help you be great; more formally, this section details applications that make it easier to create software with Qt. You may also be interested in the Libraries section.
The Qt framework has surprisingly many tools that don't get the spotlight. This section describes them (as well as the star players that do). For the purpose of this section, "tool" refers to Qt-centric utilities whose code does not get embedded within your application (but their output might).
Qt Creator:octocat: - By no means does Qt lock you into its provided IDE, but its firm integration with the framework makes it a good sell. Among other things, it provides a UI designer, modeling tools, a documentation browser, and great QML support if you're into that sort of thing. There's also a plugin system, but third-party plugins are unfortunately scarce.
Qt Designer:octocat: - If you'd rather just design the interfaces and let someone else hook them up to logic, the GUI designer is available as a separate application.
Qt Linguist:octocat: - Qt provides excellent internationalization/localization support, and this tool is very much responsible for it. Write translatable strings in your code with special macros, and this tool will aggregate them all for you so you or your translator(s) can broaden your software's audience.
Qt Installer Framework:octocat: - Nobody seems to talk about this, but Qt also provides a way to write an installer for your application. Does not support creation of macOS disk images, app bundles, or Linux packages, so be mindful of that when considering your project's distribution.
qmake:octocat: - The bundled build system designed for Qt, though it can be used for non-Qt projects.
qbs:octocat: - If QML is more your style, consider this alternative build system.
qtdiag:octocat: - Command-line tool that prints out a lot of information pertaining to both your Qt installation and your system in general. No link because there's no dedicated web page; just run qtdiag on the command line. Excellent for troubleshooting.
qmleasing:octocat: - Lets you make easing curves suitable for QML, though if you understand the underlying math there's no reason you couldn't use the resulting numbers elsewhere.
CMake:octocat: - General C++ build tool that happens to have great Qt support.
GammaRay:octocat: - Powerful debugger and general inspection tool for Qt-built software. Lets you inspect and manipulate the QObject hierarchy, view object properties, edit widgets at runtime, and far, far more. A two-sentence blurb can't do it justice, seriously check it out.
moc-ng:octocat: - Alternative implementation of moc that's binary-compatible with Qt's version.
Qt-Inspector:octocat: - Inspection tool with similar goals to GammaRay, though much simpler.
SIP:package: - Generates Python bindings for C or C++ libraries. Has special support for Qt signals and slots, and was used to create PyQt.
linuxdeployqt:octocat: - Lets you bundle your Qt based application as an AppDir or AppImage, making it possible to ship it to users of many desktop Linux distributions. Similar to the official windeployqt and macdeployqt tools but for Linux.
Bindings in Other Languages
This section describes software that enables creation of Qt software in a primary language other than C++. Libraries that allow run-time scripting in a Qt application are listed under Integrations.
Python (via PyQt):package: - Arguably the most comprehensive and well-known binding of Qt to another language.
This section describes two kinds of third-party libraries; those that provide their own brand-new functionality (e.g. widgets, dealing with particular file formats), and those that provide integrations with existing software (e.g. scripting languages, clients for REST APIs, implementations of established protocols).
Integrations
For the purpose of this section, an "Integration"-focused library does one of the following:
Serves as a client for an established Web service.
Wraps another library in a Qt-friendly manner as more than just an implementation detail (i.e. it tries to mimic the wrapped API).
QScintilla:package: - Absurdly versatile and customizable text editor widget that provides syntax highlighting, code completion, code folding, recordable macros, and much more. Built around Scintilla. Created by the same company that developed PyQt.
For fans of the ribbons that Microsoft uses in their software. Commercial.
Communi:octocat: - Cross-platform IRC framework. We've got enough IRC clients out there already, but I suppose this could also be used to implement a chat function in your application (e.g. for community support).
cutelyst:octocat: - Web framework that takes some ideas from Perl's Catalyst framework.
DOtherSide:octocat: - Binding for QML in C, primarily designed as an API for other languages to support QML.
glraw:octocat: - Convert images from any Qt-supported format to OpenGL-format textures. Useful for speeding up texture loading in graphics applications.
KDE Frameworks:octocat::package: - Metric ass-ton of libraries for KDE, but many of them can be used with regular Qt applications as well. Cross-platform, for the most part.
Marble:package: - Virtual globe and map that can be used standalone or embedded within other applications.
QNodeView:octocat: - Widget that lets you create and edit nodes in a graph similar to the kind provided by Unreal Engine, Substance Designer, or PureData.
QtAV:octocat: - Actively developed multimedia framework.
Qtilities:octocat: - Powerful set of libraries that provide GUI, logging, testing, configuration, and project functionality (among other things) for your application.
QtVerbalExpressions:octocat: - Create regular expressions using natural English expressions. Part of the VerbalExpressions project, which does the same thing for a wide variety of languages.
qtwebserver:octocat: - If you need to write a web application server in Qt for some reason, this'll help you along.
QtXlsx:octocat: - Read and write spreadsheets in Microsoft Excel format.
Qwt:package: - Qt widgets designed for scientific and technical applications.
verdigris:octocat: - Experimental library to write Qt applications without using the moc.
Another Qt-centric package manager. If you want to see the offerings without using QtPods, the full list is available [here](https://github.com/qt-pods/qt-pods-master/blob/master/pods.json), and can be added to by submitting a pull request.
Ubuntu users who are hesitant to install anything outside of their package managers can obtain any recent version of Qt from these repositories. Instructions for adding them are found within.
If the Libraries section doesn't satisfy you, perhaps one of these will.
Each entry is followed by a standout list of articles, talks, or other resources.
Qt Tips and Tricks [1, 2] - Odds and ends that might be nice to keep in your back pocket.
Mastering Qt File Selectors - Sometimes you need different variations of the same asset, but you won't know which ones to load until runtime. This class will decide for you.
Some Lesser Known Qt Tools and Commands [1, 2, 3, 4, 5] - You don't find hidden gems by staying on the beaten path.
Qt and OpenGL: Loading a 3D Model with Open Asset Import Library (Assimp) [1, 2] - Assimp supports a lot of different model types; these articles will help you support all of them.
What's new in Qt 5: QStandardPaths - This feature's been around for a few years, but it's still useful enough to warrant an entry on this list.
Moc myths debunked - The magic that Qt appears to rely in is really just a bunch of code generators. This post will bring you up to speed on the reality of the moc, the most notable one.
How Qt Signals and Slots Work [1, 2, 3] - Qt's signals/slots system lets any object talk to any other object. Understanding these three articles will help you take full advantage of the feature.
QMetaType knows your types - C++ isn't known for having good run-time type information, so Qt brings its own.
C++11 in Qt5 - Stop writing C++ like it's 2003; learn how you can take advantage of recent C++ features in your Qt applications.
Multithreading with Qt - I want to make my application do more than once thing at once. What could possibly go wrong? Talk given at QtCon 2016 by Giuseppe D'Angelo.
How to use NFC in Qt/Qml application? - Have you ever wondered how to use NFC in Qt/Qml application? This blog post will give you a complex overview of the concept of near-field communication technology with examples of its usage in real life.
Books
Qt5 C++ GUI Programming Cookbook, by Lee Zhi Eng:octocat: - Overview of advanced GUI programming techniques for those familiar (but not satisfied) with the basics. The source code used in the book is available for free.
Qt5 Cadaques:octocat: - Free book that focuses on QML, named for this town in northeastern Spain that the authors vacationed to once.
Qt6 QML Book:octocat:, by Johan Thelin, Jürgen Bocklage-Ryannel and Cyril Lorquet - Free book created by Qt Company. It provides you with a walk through of the different aspects of application development using the new Qt 6. It focuses on the Qt Quick technology, but also provides necessary information about writing C++ back-ends and extension for Qt Quick.
Telegram Desktop:octocat: - Secure your conversations so well, you'll raise the blood pressure of potential eavesdroppers. The desktop client uses Qt and is open source.
Tiled:octocat: - Perhaps the world's most popular tilemap editor. Suitable for level design in games.
VirtualBox:package: - Virtualization software for x86/64 processors. The bundled GUI uses Qt.
VLC:package: - One of the most flexible open source video players in existence.
Vuo:octocat: — Realtime visual programming language for interactive media.
Wireshark:package: - The most popular packet-sniffer out there. You are going to use this for good and not evil, right?
Ultimaker Cura:octocat: - Slicer application used to prepare your 3D models for printing with a 3D printer. Built with Uranium framework which is based on Qt 5 and Python 3.
There's also an official showroom here, which lets developers submit their own Qt-powered applications for display.
Qt is commonly used for graphics applications, even providing its own wrappers around OpenGL.
If you're familiar with Awesome, you'll know that there's an extremely wide variety of resources, the usefulness of which will depend on your project. However, if you're developing Qt applications, you'll almost certainly want to look at these as well.