737 lines
38 KiB
HTML
737 lines
38 KiB
HTML
<h1 id="awesome-qt-awesome">Awesome Qt <a
|
||
href="https://github.com/sindresorhus/awesome"><img
|
||
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
|
||
alt="Awesome" /></a></h1>
|
||
<p><a
|
||
href="https://www.qt.io"><img src="https://cdn.rawgit.com/JesseTG/awesome-qt/ef9f71a9/qt.svg" align="right" width="100"></a></p>
|
||
<blockquote>
|
||
<p>A curated list of awesome tools, libraries, and resources for the Qt
|
||
framework.</p>
|
||
</blockquote>
|
||
<p><a href="https://www.qt.io">Qt</a> 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.</p>
|
||
<p>Contributions are welcome!</p>
|
||
<h2 id="conventions">Conventions</h2>
|
||
<ul>
|
||
<li>Any list item with an OctoCat :octocat: has a GitHub repo or
|
||
organization; click on it to see the source code!</li>
|
||
<li>List items with this :package: icon have source code hosted
|
||
elsewhere.</li>
|
||
</ul>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#official-resources">Official Resources</a></li>
|
||
<li><a href="#communities">Communities</a>
|
||
<ul>
|
||
<li><a href="#official">Official</a></li>
|
||
<li><a href="#unofficial">Unofficial</a></li>
|
||
</ul></li>
|
||
<li><a href="#tools">Tools</a>
|
||
<ul>
|
||
<li><a href="#official-tools">Official Tools</a></li>
|
||
<li><a href="#third-party-tools">Third-Party Tools</a></li>
|
||
</ul></li>
|
||
<li><a href="#bindings-in-other-languages">Bindings in Other
|
||
Languages</a></li>
|
||
<li><a href="#libraries">Libraries</a>
|
||
<ul>
|
||
<li><a href="#integrations">Integrations</a></li>
|
||
<li><a href="#new-functionality">New Functionality</a></li>
|
||
</ul></li>
|
||
<li><a href="#software-repositories">Software Repositories</a></li>
|
||
<li><a href="#blogs">Blogs</a></li>
|
||
<li><a href="#books">Books</a></li>
|
||
<li><a href="#software-that-uses-qt">Software that Uses Qt</a></li>
|
||
<li><a href="#other-relevant-awesome-lists">Other Relevant Awesome
|
||
Lists</a></li>
|
||
<li><a href="#license">License</a></li>
|
||
</ul>
|
||
<h2 id="official-resources">Official Resources</h2>
|
||
<ul>
|
||
<li><a href="https://www.qt.io">Official Website</a> - The official
|
||
website for the Qt framework.</li>
|
||
<li><a href="https://doc.qt.io">Qt Documentation</a> - Official Qt
|
||
documentation. Massive and comprehensive.</li>
|
||
<li><a href="https://www.qt.io/newsletters">Qt Newsletters</a> - The
|
||
best of Qt, straight to your spam filter.</li>
|
||
<li><a href="https://bugreports.qt.io">Qt Bug Tracker</a> - If you think
|
||
you’ve found a bug with Qt or one of its related projects, report it
|
||
here (or see if someone else already has).</li>
|
||
<li><a href="https://codereview.qt-project.org">Qt Code Review</a> - See
|
||
how the Qt maintainers ensure their code is well-written.</li>
|
||
<li><a href="https://code.qt.io">Source Code</a> - Browse the various
|
||
source trees that comprise the Qt project. Has mirrors at several GitHub
|
||
organizations:
|
||
<ul>
|
||
<li>Qt <a href="https://github.com/qt">:octocat:</a></li>
|
||
<li>Qt Project <a href="https://github.com/qtproject">:octocat:</a></li>
|
||
<li>Qt Labs <a href="https://github.com/qt-labs">:octocat:</a></li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="communities">Communities</h2>
|
||
<p>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 <a
|
||
href="https://wiki.qt.io/Online_Communities">here</a> (that includes
|
||
several in other languages) if you’d prefer.</p>
|
||
<h3 id="official">Official</h3>
|
||
<ul>
|
||
<li><a href="http://lists.qt-project.org">Mailing Lists</a> - Mailing
|
||
lists for users and developers of Qt alike. Arguably the best place to
|
||
communicate directly with Qt’s maintainers. Sees frequent activity.</li>
|
||
<li><a href="https://forum.qt.io">Qt Forum</a> - If e-mail’s not your
|
||
thing, then you might also consider getting help or sharing knowledge on
|
||
the forums.</li>
|
||
<li><a href="https://wiki.qt.io">Qt Wiki</a> - The premier source for
|
||
user-contributed Qt knowledge.</li>
|
||
<li><a
|
||
href="https://webchat.freenode.net/?channels=%23qt%2C%23qt-quick%2C%23qt-creator%2C%23qt-chat">IRC</a>
|
||
- For real-time chat with other Qt developers and users. The most
|
||
popular channels are on Freenode, and include <code>#qt</code>,
|
||
<code>#qt-quick</code>, <code>#qt-creator</code>, and
|
||
<code>#qt-chat</code>.
|
||
<ul>
|
||
<li>For a full list of Qt-related IRC channels, see <a
|
||
href="https://wiki.qt.io/Online_Communities#IRC_channels">here</a>.</li>
|
||
<li>Note that the linked webchat client is <em>not</em> 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.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h3 id="unofficial">Unofficial</h3>
|
||
<ul>
|
||
<li><a href="http://www.qtforum.org">QtForum.org</a> - Not to be
|
||
confused with the official <a href="https://forum.qt.io">Qt
|
||
forum</a>.</li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<p>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 <a href="#libraries">Libraries</a>
|
||
section.</p>
|
||
<h3 id="official-tools">Official Tools</h3>
|
||
<p>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 <em>not</em> get embedded within your
|
||
application (but their output might).</p>
|
||
<ul>
|
||
<li><a href="https://www.qt.io/ide">Qt Creator</a> <a
|
||
href="https://github.com/qtproject/qt-creator">:octocat:</a> - 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.
|
||
<ul>
|
||
<li><a href="https://doc.qt.io/qt-5/qtdesigner-manual.html">Qt
|
||
Designer</a> <a
|
||
href="https://github.com/qt/qttools/tree/dev/src/designer">:octocat:</a>
|
||
- 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.</li>
|
||
<li><a href="https://doc.qt.io/qt-5/qtassistant-index.html">Qt
|
||
Assistant</a> <a
|
||
href="https://github.com/qt/qttools/tree/dev/src/assistant">:octocat:</a>
|
||
- So is the documentation viewer, for that matter.</li>
|
||
</ul></li>
|
||
<li><a href="https://doc.qt.io/archives/vs-addin">Qt Visual Studio
|
||
Add-in</a> <a href="https://github.com/qt-labs/vstools">:octocat:</a> -
|
||
If you’d rather stick to Visual Studio, this add-in will let you do
|
||
that.</li>
|
||
<li><a href="https://doc.qt.io/qt-5/qtlinguist-index.html">Qt
|
||
Linguist</a> <a
|
||
href="https://github.com/qt/qttools/tree/dev/src/linguist">:octocat:</a>
|
||
- 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.</li>
|
||
<li><a href="https://doc.qt.io/qtinstallerframework">Qt Installer
|
||
Framework</a> <a
|
||
href="https://github.com/qtproject/installer-framework">:octocat:</a> -
|
||
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.
|
||
<ul>
|
||
<li><a
|
||
href="https://doc.qt.io/qt-5/osx-deployment.html"><code>macdeployqt</code></a>
|
||
<a
|
||
href="https://github.com/qt/qttools/tree/dev/src/macdeployqt">:octocat:</a>
|
||
- Generates macOS application bundles for Qt projects.</li>
|
||
</ul></li>
|
||
<li><a href="https://doc.qt.io/qt-5/qmake-manual.html">qmake</a> <a
|
||
href="https://github.com/qt/qtbase/tree/dev/qmake">:octocat:</a> - The
|
||
bundled build system designed for Qt, though it can be used for non-Qt
|
||
projects.</li>
|
||
<li><a href="https://doc.qt.io/qbs">qbs</a> <a
|
||
href="https://github.com/qt-labs/qbs">:octocat:</a> - If QML is more
|
||
your style, consider this alternative build system.</li>
|
||
<li><a href="https://doc.qt.io/emulator">Emulator</a> - Don’t forget
|
||
about Qt’s mobile support!</li>
|
||
<li><code>qtdiag</code> <a
|
||
href="https://github.com/qt/qttools/tree/dev/src/qtdiag">:octocat:</a> -
|
||
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 <code>qtdiag</code> on the
|
||
command line. Excellent for troubleshooting.</li>
|
||
<li><code>qmleasing</code> <a
|
||
href="https://github.com/qt/qtdeclarative/tree/dev/tools/qmleasing">:octocat:</a>
|
||
- 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.</li>
|
||
</ul>
|
||
<h3 id="third-party-tools">Third-Party Tools</h3>
|
||
<ul>
|
||
<li><a href="https://doc.qt.io/qt-5/cmake-manual.html">CMake</a> <a
|
||
href="https://github.com/Kitware/CMake">:octocat:</a> - General C++
|
||
build tool that happens to have great Qt support.</li>
|
||
<li><a
|
||
href="https://www.kdab.com/development-resources/qt-tools/gammaray">GammaRay</a>
|
||
<a href="https://github.com/KDAB/GammaRay">:octocat:</a> - Powerful
|
||
debugger and general inspection tool for Qt-built software. Lets you
|
||
inspect and manipulate the <code>QObject</code> hierarchy, view object
|
||
properties, edit widgets at runtime, and far, <em>far</em> more. A
|
||
two-sentence blurb can’t do it justice, seriously check it out.</li>
|
||
<li><a href="https://github.com/woboq/moc-ng">moc-ng</a> <a
|
||
href="https://github.com/woboq/moc-ng">:octocat:</a> - Alternative
|
||
implementation of <code>moc</code> that’s binary-compatible with Qt’s
|
||
version.</li>
|
||
<li><a
|
||
href="https://github.com/robertknight/Qt-Inspector">Qt-Inspector</a> <a
|
||
href="https://github.com/robertknight/Qt-Inspector">:octocat:</a> -
|
||
Inspection tool with similar goals to GammaRay, though much
|
||
simpler.</li>
|
||
<li><a href="https://www.riverbankcomputing.com/software/sip">SIP</a> <a
|
||
href="https://www.riverbankcomputing.com/hg/sip">:package:</a> -
|
||
Generates Python bindings for C or C++ libraries. Has special support
|
||
for Qt signals and slots, and was used to create <a
|
||
href="https://riverbankcomputing.com/software/pyqt">PyQt</a>.</li>
|
||
<li><a
|
||
href="https://github.com/probonopd/linuxdeployqt">linuxdeployqt</a> <a
|
||
href="https://github.com/probonopd/linuxdeployqt">:octocat:</a> - Lets
|
||
you bundle your Qt based application as an AppDir or <a
|
||
href="http://appimage.org">AppImage</a>, making it possible to ship it
|
||
to users of many desktop Linux distributions. Similar to the official
|
||
<code>windeployqt</code> and <code>macdeployqt</code> tools but for
|
||
Linux.</li>
|
||
<li><a href="https://github.com/Fylhan/qompoter">Qompoter</a> -
|
||
Dependency manager for Qt / C++.</li>
|
||
</ul>
|
||
<h2 id="bindings-in-other-languages">Bindings in Other Languages</h2>
|
||
<p>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 <a
|
||
href="#integrations">Integrations</a>.</p>
|
||
<ul>
|
||
<li><a href="https://riverbankcomputing.com/software/pyqt">Python (via
|
||
PyQt)</a> <a
|
||
href="https://www.riverbankcomputing.com/software/pyqt/download5">:package:</a>
|
||
- Arguably the most comprehensive and well-known binding of Qt to
|
||
another language.</li>
|
||
<li><a href="https://wiki.qt.io/PySide">Python (via PySide)</a> <a
|
||
href="https://code.qt.io/cgit/pyside/pyside.git">:package:</a> - Another
|
||
binding for Python, which has been officially adopted by the Qt
|
||
project.</li>
|
||
<li><a href="http://ring-lang.sourceforge.net/doc/qt.html">Ring (via
|
||
RingQt)</a> <a
|
||
href="https://github.com/ring-lang/ring/tree/master/extensions/ringqt">:octocat:</a>
|
||
- I’ve never heard of this language either, honestly.</li>
|
||
<li><a href="https://github.com/ddobrev/QtSharp">Mono/.NET languages
|
||
(via QtSharp)</a> <a
|
||
href="https://github.com/ddobrev/QtSharp">:octocat:</a> - Experimental
|
||
wrapper for Qt that allows it to be used by .NET-based languages such as
|
||
C#. Young, but active.</li>
|
||
</ul>
|
||
<p>See these <a
|
||
href="https://www.ics.com/blog/using-qt-alternative-programming-languages-part-1">these</a>
|
||
<a
|
||
href="https://www.ics.com/blog/using-qt-alternative-programming-languages-part-2">three</a>
|
||
<a href="https://wiki.qt.io/Category:LanguageBindings">articles</a> if
|
||
you want more.</p>
|
||
<h2 id="libraries">Libraries</h2>
|
||
<p>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).</p>
|
||
<h3 id="integrations">Integrations</h3>
|
||
<p>For the purpose of this section, an “Integration”-focused library
|
||
does one of the following:</p>
|
||
<ol type="1">
|
||
<li>Serves as a client for an established Web service.</li>
|
||
<li>Wraps another library in a Qt-friendly manner as more than just an
|
||
implementation detail (i.e. it tries to mimic the wrapped API).</li>
|
||
</ol>
|
||
<ul>
|
||
<li><a href="https://xiangxw.github.io/mupdf-qt">mupdf-qt</a> <a
|
||
href="https://github.com/xiangxw/mupdf-qt">:octocat:</a> - Qt wrapper
|
||
for the <a href="https://mupdf.com">MuPDF</a> PDF viewer.</li>
|
||
<li><a href="https://github.com/lucaspcamargo/neiasound">neiasound</a>
|
||
<a href="https://github.com/lucaspcamargo/neiasound">:octocat:</a> -
|
||
OpenAL wrapper designed for games, with <a
|
||
href="https://nothings.org/stb_vorbis">stb_vorbis</a> and <a
|
||
href="http://www.mega-nerd.com/libsndfile">libsndfile</a> support.</li>
|
||
<li><a href="http://pythonqt.sourceforge.net">PythonQt</a> <a
|
||
href="https://sourceforge.net/projects/pythonqt">:package:</a> - Script
|
||
your Qt applications with Python. Not to be confused with <a
|
||
href="https://riverbankcomputing.com/software/pyqt">PyQt</a> or <a
|
||
href="https://wiki.qt.io/PySide">PySide</a>.</li>
|
||
<li><a
|
||
href="https://riverbankcomputing.com/software/qscintilla">QScintilla</a>
|
||
<a
|
||
href="https://www.riverbankcomputing.com/software/qscintilla/download">:package:</a>
|
||
- Absurdly versatile and customizable text editor widget that provides
|
||
syntax highlighting, code completion, code folding, recordable macros,
|
||
and <em>much</em> more. Built around <a
|
||
href="http://www.scintilla.org">Scintilla</a>. Created by the same
|
||
company that developed <a
|
||
href="https://riverbankcomputing.com/software/pyqt">PyQt</a>.</li>
|
||
<li><a href="https://github.com/gamecreature/QtAwesome">QtAwesome</a> <a
|
||
href="https://github.com/gamecreature/QtAwesome">:octocat:</a> - Add <a
|
||
href="https://fortawesome.github.io/Font-Awesome">Font Awesome</a> icons
|
||
to your Qt application. Other icon sets are supported, too.</li>
|
||
<li><a href="http://www.nongnu.org/libqtlua">QtLua</a> <a
|
||
href="https://svn.savannah.nongnu.org/viewvc/?root=libqtlua">:package:</a>
|
||
- Use Lua as a scripting language for Qt-based software.</li>
|
||
<li><a href="https://github.com/cybercatalyst/qtruby">qtruby</a> <a
|
||
href="https://github.com/cybercatalyst/qtruby">:octocat:</a> - Use Ruby
|
||
as a scripting language within your application.</li>
|
||
<li><a href="http://quazip.sourceforge.net">QuaZIP</a> <a
|
||
href="https://sourceforge.net/projects/quazip">:package:</a> - Read from
|
||
and write to ZIP archives. Uses <a
|
||
href="http://www.winimage.com/zLibDll/minizip.html">Minizip</a> under
|
||
the hood.</li>
|
||
<li><a href="https://vlc-qt.tano.si">VLC-Qt</a> <a
|
||
href="https://github.com/vlc-qt/vlc-qt">:octocat:</a> - Wrapper for <a
|
||
href="https://wiki.videolan.org/LibVLC">libvlc</a> that lets you add a
|
||
VLC-like media player to your application.</li>
|
||
<li><a href="https://github.com/scytheStudio/SCodes">SCodes</a> <a
|
||
href="https://github.com/scytheStudio/SCodes">:octocat:</a> - Qt &
|
||
QML wrapper for <a href="https://github.com/nu-book/zxing-cpp">ZXing-C++
|
||
Library</a> with ready-made QML items for decoding and generating 1D and
|
||
2D barcodes (aka. QR codes).</li>
|
||
</ul>
|
||
<h3 id="new-functionality">New Functionality</h3>
|
||
<ul>
|
||
<li><a href="https://communi.github.io">Communi</a> <a
|
||
href="https://github.com/communi/libcommuni">:octocat:</a> -
|
||
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).</li>
|
||
<li><a href="http://cutelyst.org">cutelyst</a> <a
|
||
href="https://github.com/cutelyst/cutelyst">:octocat:</a> - Web
|
||
framework that takes some ideas from Perl’s Catalyst framework.</li>
|
||
<li><a href="https://github.com/Rolisteam/DiceParser">DiceParser</a> <a
|
||
href="https://github.com/Rolisteam/DiceParser">:octocat:</a> - Dice
|
||
Roller framework based on its own syntax.</li>
|
||
<li><a href="https://github.com/filcuc/DOtherSide">DOtherSide</a> <a
|
||
href="https://github.com/filcuc/DOtherSide">:octocat:</a> - Binding for
|
||
QML in C, primarily designed as an API for <em>other</em> languages to
|
||
support QML.</li>
|
||
<li><a href="https://felgo.com">Felgo</a> - Cross-platform game engine
|
||
and app framework that relies heavily on QML. Has a lot of tools and
|
||
resources, and may even deserve its own list.</li>
|
||
<li><a href="https://github.com/cginternals/glraw">glraw</a> <a
|
||
href="https://github.com/cginternals/glraw">:octocat:</a> - Convert
|
||
images from any Qt-supported format to OpenGL-format textures. Useful
|
||
for speeding up texture loading in graphics applications.</li>
|
||
<li><a href="https://github.com/steveire/grantlee">grantlee</a> <a
|
||
href="https://github.com/steveire/grantlee">:octocat:</a> -
|
||
Django-inspired text templating.</li>
|
||
<li><a href="https://github.com/vogel/injeqt">injeqt</a> <a
|
||
href="https://github.com/vogel/injeqt">:octocat:</a> - Dependency
|
||
injection for Qt.</li>
|
||
<li><a href="https://api.kde.org/frameworks">KDE Frameworks</a> <a
|
||
href="https://github.com/KDE">:octocat:</a> <a
|
||
href="https://quickgit.kde.org">:package:</a> - 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.</li>
|
||
<li><a href="https://marble.kde.org">Marble</a> <a
|
||
href="https://cgit.kde.org/marble.git">:package:</a> - Virtual globe and
|
||
map that can be used standalone or embedded within other
|
||
applications.</li>
|
||
<li><a href="https://github.com/Simsys/qhexedit2">qgexedit2</a> <a
|
||
href="https://github.com/Simsys/qhexedit2">:octocat:</a> - Embed a hex
|
||
editor in your application.</li>
|
||
<li><a href="https://github.com/papyros/qml-material">qml-material</a>
|
||
<a href="https://github.com/papyros/qml-material">:octocat:</a> -
|
||
Material Design implemented in QML.</li>
|
||
<li><a href="https://github.com/gwihlidal/QNodeView">QNodeView</a> <a
|
||
href="https://github.com/gwihlidal/QNodeView">:octocat:</a> - Widget
|
||
that lets you create and edit nodes in a graph similar to the kind
|
||
provided by Unreal Engine, Substance Designer, or PureData.</li>
|
||
<li><a
|
||
href="https://github.com/alex-spataru/QSimpleUpdater">QSimpleUpdater</a>
|
||
<a href="https://github.com/alex-spataru/QSimpleUpdater">:octocat:</a> -
|
||
Let your application update itself.</li>
|
||
<li><a href="https://github.com/robertknight/qt-maybe">qt-maybe</a> <a
|
||
href="https://github.com/robertknight/qt-maybe">:octocat:</a> - Fans of
|
||
type theory will enjoy these sum and optional types.</li>
|
||
<li><a
|
||
href="https://github.com/robertknight/qt-mustache">qt-mustache</a> <a
|
||
href="https://github.com/robertknight/qt-mustache">:octocat:</a> -
|
||
Render <a href="https://mustache.github.io">Mustache</a> templates.</li>
|
||
<li><a href="http://www.qtav.org">QtAV</a> <a
|
||
href="https://github.com/wang-bin/QtAV">:octocat:</a> - Actively
|
||
developed multimedia framework.</li>
|
||
<li><a href="https://jpnaude.github.io/Qtilities">Qtilities</a> <a
|
||
href="https://github.com/JPNaude/Qtilities">:octocat:</a> - Powerful set
|
||
of libraries that provide GUI, logging, testing, configuration, and
|
||
project functionality (among other things) for your application.</li>
|
||
<li><a
|
||
href="http://www.devmachines.com/qtitanchart-overview">QtitanChart</a> -
|
||
Chart generation framework. Commercial.</li>
|
||
<li><a
|
||
href="http://www.devmachines.com/qtitanribbon-overview">QtitanRibbon</a>
|
||
- For fans of the ribbons that Microsoft uses in their software.
|
||
Commercial.</li>
|
||
<li><a href="https://github.com/cybercatalyst/qtnotify">qtnotify</a> <a
|
||
href="https://github.com/cybercatalyst/qtnotify">:octocat:</a> -
|
||
Notification framework.</li>
|
||
<li><a
|
||
href="https://github.com/cybercatalyst/qtterminalwidget">QtTerminalWidget</a>
|
||
<a
|
||
href="https://github.com/cybercatalyst/qtterminalwidget">:octocat:</a> -
|
||
Make your application capable of <strong>anything</strong>.</li>
|
||
<li><a
|
||
href="https://github.com/VerbalExpressions/QtVerbalExpressions">QtVerbalExpressions</a>
|
||
<a
|
||
href="https://github.com/VerbalExpressions/QtVerbalExpressions">:octocat:</a>
|
||
- Create regular expressions using natural English expressions. Part of
|
||
the <a href="https://verbalexpressions.github.io">VerbalExpressions</a>
|
||
project, which does the same thing for a wide variety of languages.</li>
|
||
<li><a
|
||
href="https://github.com/cybercatalyst/qtwebserver">qtwebserver</a> <a
|
||
href="https://github.com/cybercatalyst/qtwebserver">:octocat:</a> - If
|
||
you need to write a web application server in Qt for some reason,
|
||
this’ll help you along.</li>
|
||
<li><a href="http://qtxlsx.debao.me">QtXlsx</a> <a
|
||
href="https://github.com/dbzhang800/QtXlsxWriter">:octocat:</a> - Read
|
||
and write spreadsheets in Microsoft Excel format.</li>
|
||
<li><a href="http://qwt.sourceforge.net">Qwt</a> <a
|
||
href="https://sourceforge.net/projects/qwt">:package:</a> - Qt widgets
|
||
designed for scientific and technical applications.</li>
|
||
<li><a href="https://github.com/woboq/verdigris">verdigris</a> <a
|
||
href="https://github.com/woboq/verdigris">:octocat:</a> - Experimental
|
||
library to write Qt applications <em>without</em> using the
|
||
<code>moc</code>.</li>
|
||
</ul>
|
||
<h2 id="software-repositories">Software Repositories</h2>
|
||
<p>If the <a href="#libraries">Libraries</a> section doesn’t satisfy
|
||
you, perhaps one of these will.</p>
|
||
<ul>
|
||
<li><a href="https://inqlude.org">#inqlude</a> - The most well-known
|
||
aggregation of Qt-centric libraries out there. A package manager is also
|
||
available <a href="https://inqlude.org/get.html">here</a>.</li>
|
||
<li><a href="https://github.com/qt-pods/qt-pods">QtPods</a> - Another
|
||
Qt-centric package manager. If you want to see the offerings without
|
||
using QtPods, the full list is available <a
|
||
href="https://github.com/qt-pods/qt-pods-master/blob/master/pods.json">here</a>,
|
||
and can be added to by submitting a pull request.</li>
|
||
<li><a href="https://www.linux-apps.com">Linux-Apps.com</a> - Despite
|
||
the name, Linux-Apps.com aggregates a wide variety of Qt-based tools and
|
||
libraries for both end-users and developers.</li>
|
||
<li><a href="https://launchpad.net/~beineri">Stephan Binner’s Ubuntu
|
||
PPAs</a> - 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.</li>
|
||
</ul>
|
||
<h2 id="blogs">Blogs</h2>
|
||
<p>Each entry is followed by a standout list of articles, talks, or
|
||
other resources.</p>
|
||
<ul>
|
||
<li><a href="https://planet.qt.io">Planet Qt</a> - Official aggregation
|
||
of first-party and third-party Qt-related blogs.</li>
|
||
<li><a href="https://www.ics.com/blog">ICS</a> - Qt-centric software
|
||
consulting firm with a really neat blog. Specializes in graphics
|
||
applications.
|
||
<ul>
|
||
<li>Qt Tips and Tricks [<a
|
||
href="https://www.ics.com/blog/qt-tips-and-tricks-part-1">1</a>, <a
|
||
href="https://www.ics.com/blog/qt-tips-and-tricks-part-2">2</a>] - Odds
|
||
and ends that might be nice to keep in your back pocket.</li>
|
||
<li><a
|
||
href="https://www.ics.com/blog/mastering-qt-file-selectors">Mastering Qt
|
||
File Selectors</a> - 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.</li>
|
||
<li>Some Lesser Known Qt Tools and Commands [<a
|
||
href="https://www.ics.com/blog/some-lesser-known-qt-tools-and-commands-part-1">1</a>,
|
||
<a
|
||
href="https://www.ics.com/blog/some-lesser-known-qt-tools-and-commands-part-2">2</a>,
|
||
<a
|
||
href="https://www.ics.com/blog/some-lesser-known-qt-tools-and-commands-part-3">3</a>,
|
||
<a
|
||
href="https://www.ics.com/blog/some-lesser-known-qt-tools-and-commands-part-4">4</a>,
|
||
<a
|
||
href="https://www.ics.com/blog/some-lesser-known-qt-tools-and-commands-part-5">5</a>]
|
||
- You don’t find hidden gems by staying on the beaten path.</li>
|
||
<li><a
|
||
href="https://www.ics.com/blog/using-self-signed-certificates-qt-code">Using
|
||
Self-Signed Certificates in Qt Code</a> - Trust nobody.</li>
|
||
<li><a href="https://www.ics.com/blog/integrating-c-qml">Integrating C++
|
||
with QML</a> - Talk to your scripting language. That’s what it’s there
|
||
for.</li>
|
||
<li>Qt and OpenGL: Loading a 3D Model with Open Asset Import Library
|
||
(Assimp) [<a
|
||
href="https://www.ics.com/blog/qt-and-opengl-loading-3d-model-open-asset-import-library-assimp">1</a>,
|
||
<a
|
||
href="https://www.ics.com/blog/qt-and-opengl-loading-3d-model-open-asset-import-library-assimp-part-2">2</a>]
|
||
- Assimp supports a lot of different model types; these articles will
|
||
help you support all of them.</li>
|
||
<li><a
|
||
href="https://www.ics.com/blog/whats-new-qt-5-qstandardpaths">What’s new
|
||
in Qt 5: QStandardPaths</a> - This feature’s been around for a few
|
||
years, but it’s still useful enough to warrant an entry on this
|
||
list.</li>
|
||
<li><a
|
||
href="https://www.ics.com/blog/whats-new-qt-52-qcommandlineparser">What’s
|
||
New in Qt 5.2: QCommandLineParser</a> - Another oldie, but still a
|
||
goodie.</li>
|
||
</ul></li>
|
||
<li><a href="https://woboq.com/blog">Woboq</a> - Another software
|
||
consulting firm that also contributes code to Qt. They seem to
|
||
specialize in Qt’s core architecture.
|
||
<ul>
|
||
<li><a href="https://woboq.com/blog/moc-myths.html">Moc myths
|
||
debunked</a> - 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 <code>moc</code>, the most notable one.</li>
|
||
<li>How Qt Signals and Slots Work [<a
|
||
href="https://woboq.com/blog/how-qt-signals-slots-work.html">1</a>, <a
|
||
href="https://woboq.com/blog/how-qt-signals-slots-work-part2-qt5.html">2</a>,
|
||
<a
|
||
href="https://woboq.com/blog/how-qt-signals-slots-work-part3-queuedconnection.html">3</a>]
|
||
- 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.</li>
|
||
<li><a
|
||
href="https://woboq.com/blog/qmetatype-knows-your-types.html">QMetaType
|
||
knows your types</a> - C++ isn’t known for having good run-time type
|
||
information, so Qt brings its own.</li>
|
||
<li><a href="https://woboq.com/blog/cpp11-in-qt5.html">C++11 in Qt5</a>
|
||
- Stop writing C++ like it’s 2003; learn how you can take advantage of
|
||
recent C++ features in your Qt applications.</li>
|
||
<li><a href="https://woboq.com/blog/cpp14-in-qt.html">C++14 for Qt
|
||
programmers</a> - <code>s/2003/2011/</code></li>
|
||
<li><a href="https://woboq.com/blog/qstringliteral.html">QStringLiteral
|
||
explained</a> - String literals are widely used in many applications;
|
||
wouldn’t it be nice if you could make them faster to access?</li>
|
||
<li><a
|
||
href="https://woboq.com/blog/nice-debug-output-with-qt.html">Nicer debug
|
||
output in Qt using QT_MESSAGE_PATTERN</a> - It’s nice to be able to read
|
||
your application’s logs.</li>
|
||
</ul></li>
|
||
<li><a href="https://www.kdab.com/category/blogs">KDAB</a> -
|
||
<em>Another</em> consulting firm that specializes in Qt.
|
||
<ul>
|
||
<li><a href="https://www.youtube.com/watch?v=JcoFk_PVhdk">GammaRay:
|
||
Taking a deep look into your Qt application</a> - Talk about <a
|
||
href="https://www.kdab.com/development-resources/qt-tools/gammaray">GammaRay</a>
|
||
and how it can help you dissect your Qt applications. Talk given at
|
||
QtCon 2016 by <a href="https://github.com/vkrause">Volker
|
||
Krause</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=dcSsjxhazu0">Multithreading
|
||
with Qt</a> - I want to make my application do more than once thing at
|
||
once. What could possibly go wrong? Talk given at QtCon 2016 by <a
|
||
href="https://github.com/dangelog">Giuseppe D’Angelo</a>.</li>
|
||
<li><a href="https://www.youtube.com/watch?v=L4NClVxqdMw">Linux perf for
|
||
Qt developers</a> - How to make your Qt application faster, Linux-style.
|
||
Talk given at QtCon 2016 by <a href="https://github.com/milianw">Milian
|
||
Wolff</a>.</li>
|
||
</ul></li>
|
||
<li><a href="https://scythe-studio.com/blog">Scythe-Studio</a> - Yet
|
||
another consulting company specialized in Qt
|
||
<ul>
|
||
<li><a href="https://scythe-studio.com/blog/qt-creator-cheat-sheet">Qt
|
||
Creator Cheat Sheet</a> - Convenient document for improving your
|
||
familiarity with Qt Creator IDE.</li>
|
||
<li><a
|
||
href="https://scythe-studio.com/blog/deploying-app-and-generating-offline-installers-for-windows-qt-installer-framework-tutorial">Qt
|
||
Installer Framework tutorial</a> - Series about practical usage of Qt
|
||
Installer framework with in-depth overview of different features.</li>
|
||
<li><a
|
||
href="https://scythe-studio.com/blog/how-to-interface-qt-with-android-java-code">How
|
||
to interface Qt with Android Java code</a> - Getting wild and “native”
|
||
with Android code in your Qt application.</li>
|
||
<li><a
|
||
href="https://scythe-studio.com/blog/nfc-in-qt-qml-application">How to
|
||
use NFC in Qt/Qml application?</a> - 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.</li>
|
||
</ul></li>
|
||
</ul>
|
||
<h2 id="books">Books</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.packtpub.com/application-development/qt5-c-gui-programming-cookbook">Qt5
|
||
C++ GUI Programming Cookbook</a>, by <a
|
||
href="https://www.zhieng.com">Lee Zhi Eng</a> <a
|
||
href="https://github.com/PacktPublishing/Qt5-C-GUI-Programming-Cookbook">:octocat:</a>
|
||
- 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.</li>
|
||
<li><a
|
||
href="https://www.packtpub.com/game-development/game-programming-using-qt">Game
|
||
Programming Using Qt: Beginner’s Guide</a> by Witold Wysota and Lorenz
|
||
Haas - Good place to start learning how to program games with QML.</li>
|
||
<li><a
|
||
href="https://www.packtpub.com/application-development/application-development-qt-creator-second-edition">Application
|
||
Development with Qt Creator - 2nd Edition</a>, by <a
|
||
href="http://www.lothlorien.com/kf6gpe">Ray Rischpater</a> - Beginner’s
|
||
guide to Qt, with a lot of focus on Qt Creator and its associated
|
||
tools.</li>
|
||
<li><a
|
||
href="https://www.packtpub.com/application-development/qt-5-blueprints">Qt
|
||
5 Blueprints</a>, by <a href="https://github.com/librehat">Symeon
|
||
Huang</a> - Seems to be about the overall structure of a Qt
|
||
project.</li>
|
||
<li><a
|
||
href="https://www.packtpub.com/application-development/mastering-qt-5">Mastering
|
||
Qt 5</a>, by <a href="https://github.com/GuillaumeLazar">Guillaume
|
||
Lazar</a> and <a href="https://github.com/synapticvoid">Robin Penea</a>
|
||
<a
|
||
href="https://github.com/PacktPublishing/Mastering-Qt-5">:octocat:</a> -
|
||
Not your daddy’s Qt. Tips and tricks for the experienced. The source
|
||
code used in the book is available for free.</li>
|
||
<li><a
|
||
href="https://www.packtpub.com/application-development/pyside-gui-application-development-second-edition">PySide
|
||
GUI Application Development - 2nd Edition</a>, by Gopinath Jaganmohan
|
||
and Venkateshwaran Loganathan - Imagine these other books, but in
|
||
Python.</li>
|
||
<li><a href="https://qmlbook.github.io">Qt5 Cadaques</a> <a
|
||
href="https://github.com/qmlbook/qmlbook">:octocat:</a> - Free book that
|
||
focuses on QML, named for this town in northeastern Spain that the
|
||
authors vacationed to once.</li>
|
||
<li><a href="https://www.qt.io/product/qt6/qml-book">Qt6 QML Book</a> <a
|
||
href="https://github.com/qmlbook/qt6book">:octocat:</a>, 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.</li>
|
||
</ul>
|
||
<h2 id="software-that-uses-qt">Software that Uses Qt</h2>
|
||
<p>A framework is only as great as the software that uses it.
|
||
Fortunately, much great software uses Qt.</p>
|
||
<ul>
|
||
<li><a href="http://www.autodesk.com/maya">Autodesk Maya</a> - 3D
|
||
animation and design software that has been used to create visual
|
||
effects for some of the most popular movies and TV shows of all
|
||
time.</li>
|
||
<li><a
|
||
href="https://www.blackmagicdesign.com/products/davinciresolve/">Davinci
|
||
Resolve</a> - Non-linear video editing freeware with commercial plan
|
||
used to create some Hollywood movies.</li>
|
||
<li><a href="https://cmake.org">CMake</a> <a
|
||
href="https://github.com/Kitware/CMake">:octocat:</a> - The closest
|
||
thing to a standard C++ build system out there. The bundled GUI uses
|
||
Qt.</li>
|
||
<li><a href="https://www.cryengine.com">CRYENGINE</a> <a
|
||
href="https://github.com/CRYTEK-CRYENGINE/CRYENGINE">:octocat:</a> - But
|
||
can it run Crysis? Some auxillary tools use Qt.</li>
|
||
<li><a href="https://www.stack.nl/~dimitri/doxygen">Doxygen</a> <a
|
||
href="https://github.com/doxygen/doxygen">:octocat:</a> - The most
|
||
popular documentation generator for C++, though it supports other
|
||
languages as well. The bundled GUI uses Qt.</li>
|
||
<li><a href="https://www.google.com/earth">Google Earth</a> -
|
||
<em>The</em> virtual globe.</li>
|
||
<li><a href="https://www.kde.org">KDE</a> <a
|
||
href="https://github.com/KDE">:octocat:</a> - One of the most popular
|
||
desktop environments for Linux.</li>
|
||
<li><a href="https://lmms.io/">LMMS</a> - Digital audio
|
||
workstation.</li>
|
||
<li><a href="https://www.malwarebytes.com">Malwarebytes</a> - Your
|
||
Windows desktop’s personal bodyguard.</li>
|
||
<li><a href="https://musescore.org">MuseScore</a> - Music notation
|
||
software.</li>
|
||
<li><a href="https://www.parallels.com/products/desktop">Parallels
|
||
Desktop</a> - Consumer-focused virtualization.</li>
|
||
<li><a href="https://www.qt.io/ide">Qt Creator</a> <a
|
||
href="https://github.com/qtproject/qt-creator">:octocat:</a> - Something
|
||
something eating your own dog food. Listed in the <a
|
||
href="#official-tools">official tools</a>, but not listing it here
|
||
doesn’t feel right.</li>
|
||
<li><a href="http://www.rolisteam.org">Rolisteam</a> <a
|
||
href="https://github.com/Rolisteam/rolisteam">:octocat:</a> - Virtual
|
||
tabletop for remote Role Playing Games.</li>
|
||
<li><a href="https://shotcut.org/">Shotcut</a> - Video editor.</li>
|
||
<li><a href="https://www.iforce2d.net/rube">RUBE</a> - Level design tool
|
||
for any game that uses the Box2D physics engine.</li>
|
||
<li><a href="https://www.teamspeak.com">TeamSpeak</a> - When gamers want
|
||
to voice chat in a game that doesn’t support it, they’ll use this.</li>
|
||
<li><a href="https://desktop.telegram.org">Telegram Desktop</a> <a
|
||
href="https://github.com/telegramdesktop/tdesktop">:octocat:</a> -
|
||
Secure your conversations so well, you’ll raise the blood pressure of
|
||
potential eavesdroppers. The desktop client uses Qt and is open
|
||
source.</li>
|
||
<li><a href="http://www.mapeditor.org">Tiled</a> <a
|
||
href="https://github.com/bjorn/tiled">:octocat:</a> - Perhaps the
|
||
world’s most popular tilemap editor. Suitable for level design in
|
||
games.</li>
|
||
<li><a href="https://www.virtualbox.org">VirtualBox</a> <a
|
||
href="https://www.virtualbox.org/browser/vbox/trunk">:package:</a> -
|
||
Virtualization software for x86/64 processors. The bundled GUI uses
|
||
Qt.</li>
|
||
<li><a href="https://www.videolan.org/vlc">VLC</a> <a
|
||
href="https://code.videolan.org">:package:</a> - One of the most
|
||
flexible open source video players in existence.</li>
|
||
<li><a href="https://vuo.org">Vuo</a> <a
|
||
href="https://github.com/vuo/vuo">:octocat:</a> — Realtime visual
|
||
programming language for interactive media.</li>
|
||
<li><a href="https://www.wireshark.org">Wireshark</a> <a
|
||
href="https://code.wireshark.org/review/gitweb?p=wireshark.git;a=tree">:package:</a>
|
||
- The most popular packet-sniffer out there. You <em>are</em> going to
|
||
use this for good and not evil, right?</li>
|
||
<li><a href="https://www.wolfram.com/mathematica">Wolfram
|
||
Mathematica</a> - Programming language, symbolic calculator, and an
|
||
engineer’s best friend.</li>
|
||
<li><a href="https://yabause.org">Yabause</a> <a
|
||
href="https://github.com/Yabause/yabause">:octocat:</a> - Sega Saturn
|
||
emulator.</li>
|
||
<li><a href="https://ultimaker.com/software/ultimaker-cura">Ultimaker
|
||
Cura</a> <a href="https://github.com/Ultimaker/Cura">:octocat:</a> -
|
||
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.</li>
|
||
</ul>
|
||
<p>There’s also an official showroom <a
|
||
href="https://showroom.qt.io">here</a>, which lets developers submit
|
||
their own Qt-powered applications for display.</p>
|
||
<h2 id="other-relevant-awesome-lists">Other Relevant Awesome Lists</h2>
|
||
<p>If you’re familiar with Awesome, you’ll know that there’s an
|
||
<em>extremely</em> 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.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/fffaraz/awesome-cpp">Awesome C/C++</a> -
|
||
There’s no reason you can’t use C++ libraries that weren’t designed for
|
||
Qt. Sometimes they might even suit your needs better than what Qt
|
||
offers.</li>
|
||
<li><a href="https://github.com/aleksandar-todorovic/awesome-c">Awesome
|
||
C</a> - Same goes for C libraries; might wanna brush up on those RAII
|
||
techniques while you’re at it.</li>
|
||
<li><a href="https://github.com/onqtam/awesome-cmake">Awesome CMake</a>
|
||
- If you’re not using qmake for your project, you’re likely using CMake
|
||
instead.</li>
|
||
<li><a href="https://github.com/eug/awesome-opengl">Awesome OpenGL</a> -
|
||
Qt is commonly used for graphics applications, even providing its own
|
||
wrappers around OpenGL.</li>
|
||
</ul>
|
||
<h2 id="license">License</h2>
|
||
<p><a href="https://creativecommons.org/publicdomain/zero/1.0"><img
|
||
src="https://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg"
|
||
alt="CC0" /></a></p>
|
||
<p>To the extent possible under law, <a
|
||
href="https://jessetg.github.io">Jesse Talavera-Greenberg</a> has waived
|
||
all copyright and related or neighboring rights to this work. See the <a
|
||
href="LICENSE">LICENSE</a> file for details.</p>
|
||
<p><a href="https://github.com/JesseTG/awesome-qt">qt.md Github</a></p>
|