Convert Figma logo to code with AI

JesseTG logoawesome-qt

A curated list of awesome tools, libraries, and resources for the Qt framework.

1,400
176
1,400
12

Top Related Projects

59,344

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some extent.

A cross-platform Qt IDE

4,062

The Linux perf GUI for performance analysis.

Quick Overview

The JesseTG/awesome-qt repository is a curated list of awesome Qt resources, libraries, and tools. Qt is a cross-platform application development framework used for creating graphical user interfaces (GUIs) and multi-platform applications. This repository serves as a comprehensive guide for developers working with Qt, providing a wide range of useful resources and information.

Pros

  • Comprehensive Collection: The repository covers a vast array of Qt-related resources, including libraries, tools, frameworks, and more, making it a one-stop-shop for Qt developers.
  • Regularly Updated: The project is actively maintained, with new resources and updates being added regularly, ensuring the information remains relevant and up-to-date.
  • Diverse Categories: The resources are organized into various categories, such as GUI, Multimedia, Networking, and more, making it easy to find specific types of tools and libraries.
  • Community-Driven: The repository is community-driven, with contributions from Qt enthusiasts and developers, ensuring a diverse and high-quality selection of resources.

Cons

  • Overwhelming Choices: The sheer number of resources listed can be overwhelming for newcomers to Qt, making it challenging to identify the most suitable tools and libraries for their specific needs.
  • Varying Quality: While the repository aims to curate high-quality resources, the quality of some listed items may vary, and users should exercise caution when evaluating and using them.
  • Lack of Detailed Descriptions: Some of the resource listings may lack detailed descriptions or information, making it difficult for users to understand the purpose and features of certain tools or libraries.
  • Potential Outdated Information: As the Qt ecosystem evolves, some of the listed resources may become outdated or no longer maintained, requiring users to verify the current status of the projects.

Getting Started

To get started with the JesseTG/awesome-qt repository, follow these steps:

  1. Visit the GitHub repository.
  2. Browse the table of contents to find the category or type of resource you're interested in.
  3. Click on the resource link to navigate to the project's website or repository.
  4. Review the project's documentation, examples, and community support to determine if it fits your needs.
  5. If you find a resource that you think should be added to the list, feel free to submit a pull request with your suggestion.

Competitor Comparisons

59,344

Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies

Pros of imgui

  • Lightweight and efficient, with a small codebase and minimal dependencies
  • Highly customizable and easy to integrate into existing projects
  • Supports a wide range of platforms and rendering backends

Cons of imgui

  • Lacks the breadth of features and resources available in the Awesome Qt repository
  • May require more manual setup and configuration compared to a more comprehensive framework like Qt
  • Primarily focused on immediate-mode GUI, which may not be suitable for all types of applications

Code Comparison

imgui (5 lines)

ImGui::Begin("My Window");
ImGui::Text("Hello, world!");
if (ImGui::Button("Click me"))
{
    // Handle button click
}
ImGui::End();

Awesome Qt (5 lines)

QMainWindow window;
window.setWindowTitle("My Application");
QWidget* centralWidget = new QWidget(&window);
window.setCentralWidget(centralWidget);
window.show();

GammaRay is a tool to poke around in a Qt-application and also to manipulate the application to some extent.

Pros of GammaRay

  • GammaRay is a powerful and comprehensive tool for inspecting and debugging Qt-based applications, providing a wide range of features and capabilities.
  • It offers a user-friendly interface that makes it easy to explore and understand the internal structure and behavior of a Qt application.
  • GammaRay is actively maintained and supported by the KDAB team, ensuring regular updates and improvements.

Cons of GammaRay

  • GammaRay may have a steeper learning curve compared to the more curated and beginner-friendly Awesome Qt list.
  • The installation and setup process for GammaRay may be more involved, as it requires integration with the target application.
  • GammaRay is primarily focused on Qt-based applications, while the Awesome Qt list covers a broader range of Qt-related resources.

Code Comparison

Here's a brief code comparison between the two projects:

Awesome Qt (JesseTG/awesome-qt):

- [Qt](https://www.qt.io/) - A cross-platform application development framework.
- [Qt Creator](https://www.qt.io/product/development-tools) - A cross-platform IDE tailored for Qt development.
- [Qt Documentation](https://doc.qt.io/) - The official Qt documentation.

GammaRay (KDAB/GammaRay):

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    GammaRay::launchAndConnect();
    return app.exec();
}

A cross-platform Qt IDE

Pros of qt-creator

  • Official Qt IDE with deep integration and advanced features
  • Actively maintained by the Qt Company with frequent updates
  • Comprehensive toolset for Qt development, including UI designer and debugger

Cons of qt-creator

  • Large, complex codebase that may be overwhelming for beginners
  • Focused solely on Qt development, lacking versatility for other projects
  • Requires more system resources compared to a curated list

Code comparison

qt-creator:

// Example of Qt Creator's code model
class MyClass : public QObject
{
    Q_OBJECT
public:
    MyClass(QObject *parent = nullptr);
signals:
    void mySignal();
};

awesome-qt:

# Awesome Qt

A curated list of awesome Qt frameworks, libraries, resources, and shiny things.

## Widgets
- [QCustomPlot](https://www.qcustomplot.com/) - Qt plotting widget

Summary

qt-creator is a full-featured IDE specifically designed for Qt development, offering deep integration and advanced tools. awesome-qt, on the other hand, is a curated list of Qt-related resources, providing a lightweight reference for developers. While qt-creator offers a more comprehensive development environment, awesome-qt serves as a valuable collection of Qt-related tools and libraries that can complement any Qt development workflow.

4,062

The Linux perf GUI for performance analysis.

Pros of hotspot

  • Active development project with regular updates and contributions
  • Focused tool for CPU performance analysis and visualization
  • Provides detailed flame graphs and performance data for Qt applications

Cons of hotspot

  • Limited scope compared to the broader Qt ecosystem coverage of awesome-qt
  • Steeper learning curve for users new to performance profiling
  • Requires additional setup and integration with perf events

Code comparison

hotspot (C++):

void MainWindow::on_recordButton_clicked()
{
    if (m_recording) {
        stopRecording();
    } else {
        startRecording();
    }
}

awesome-qt (Markdown):

## Development Tools

- [Qt Creator](https://www.qt.io/product/development-tools) - The official IDE for Qt development.
- [QML Live](https://github.com/qt-labs/qmllive) - A tool for live reloading of QML code.

Summary

hotspot is a specialized tool for CPU performance analysis in Qt applications, offering detailed insights and visualizations. awesome-qt, on the other hand, is a curated list of Qt resources, covering a wide range of topics and tools within the Qt ecosystem. While hotspot provides hands-on functionality for performance optimization, awesome-qt serves as a comprehensive reference guide for Qt developers, pointing them to various resources and tools available in the community.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Awesome Qt Awesome

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.

Contents

Official Resources

  • Official Website - The official website for the Qt framework.
  • Qt Documentation - Official Qt documentation. Massive and comprehensive.
  • Qt Newsletters - The best of Qt, straight to your spam filter.
  • Qt Bug Tracker - 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).
  • Qt Code Review - See how the Qt maintainers ensure their code is well-written.
  • Source Code - Browse the various source trees that comprise the Qt project. Has mirrors at several GitHub organizations:

Communities

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.

Official

  • Mailing Lists - Mailing lists for users and developers of Qt alike. Arguably the best place to communicate directly with Qt's maintainers. Sees frequent activity.
  • Qt Forum - If e-mail's not your thing, then you might also consider getting help or sharing knowledge on the forums.
  • Qt Wiki - The premier source for user-contributed Qt knowledge.
  • IRC - 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.

Unofficial

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.

Official Tools

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 Assistant :octocat: - So is the documentation viewer, for that matter.
  • Qt Visual Studio Add-in :octocat: - If you'd rather stick to Visual Studio, this add-in will let you do that.
  • 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.
  • Emulator - Don't forget about Qt's mobile support!
  • 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.

Third-Party Tools

  • 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.
  • Qompoter - Dependency manager for Qt / C++.

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.

See these these three articles if you want more.

Libraries

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:

  1. Serves as a client for an established Web service.
  2. Wraps another library in a Qt-friendly manner as more than just an implementation detail (i.e. it tries to mimic the wrapped API).

New Functionality

  • 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.
  • DiceParser :octocat: - Dice Roller framework based on its own syntax.
  • DOtherSide :octocat: - Binding for QML in C, primarily designed as an API for other languages to support QML.
  • Felgo - 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.
  • glraw :octocat: - Convert images from any Qt-supported format to OpenGL-format textures. Useful for speeding up texture loading in graphics applications.
  • grantlee :octocat: - Django-inspired text templating.
  • injeqt :octocat: - Dependency injection for Qt.
  • 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.
  • qgexedit2 :octocat: - Embed a hex editor in your application.
  • qml-material :octocat: - Material Design implemented in QML.
  • 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.
  • QSimpleUpdater :octocat: - Let your application update itself.
  • qt-maybe :octocat: - Fans of type theory will enjoy these sum and optional types.
  • qt-mustache :octocat: - Render Mustache templates.
  • 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.
  • QtitanChart - Chart generation framework. Commercial.
  • QtitanRibbon - For fans of the ribbons that Microsoft uses in their software. Commercial.
  • qtnotify :octocat: - Notification framework.
  • QtTerminalWidget :octocat: - Make your application capable of anything.
  • 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.

Software Repositories

If the Libraries section doesn't satisfy you, perhaps one of these will.

  • #inqlude - The most well-known aggregation of Qt-centric libraries out there. A package manager is also available here.
  • QtPods - Another Qt-centric package manager. If you want to see the offerings without using QtPods, the full list is available here, and can be added to by submitting a pull request.
  • Linux-Apps.com - Despite the name, Linux-Apps.com aggregates a wide variety of Qt-based tools and libraries for both end-users and developers.
  • Stephan Binner's Ubuntu PPAs - 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.

Blogs

Each entry is followed by a standout list of articles, talks, or other resources.

  • Planet Qt - Official aggregation of first-party and third-party Qt-related blogs.
  • ICS - Qt-centric software consulting firm with a really neat blog. Specializes in graphics applications.
    • 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.
    • Using Self-Signed Certificates in Qt Code - Trust nobody.
    • Integrating C++ with QML - Talk to your scripting language. That's what it's there for.
    • 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.
    • What's New in Qt 5.2: QCommandLineParser - Another oldie, but still a goodie.
  • Woboq - Another software consulting firm that also contributes code to Qt. They seem to specialize in Qt's core architecture.
    • 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.
    • C++14 for Qt programmers - s/2003/2011/
    • QStringLiteral explained - String literals are widely used in many applications; wouldn't it be nice if you could make them faster to access?
    • Nicer debug output in Qt using QT_MESSAGE_PATTERN - It's nice to be able to read your application's logs.
  • KDAB - Another consulting firm that specializes in Qt.
  • Scythe-Studio - Yet another consulting company specialized in Qt

Books

Software that Uses Qt

A framework is only as great as the software that uses it. Fortunately, much great software uses Qt.

  • Autodesk Maya - 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.
  • Davinci Resolve - Non-linear video editing freeware with commercial plan used to create some Hollywood movies.
  • CMake :octocat: - The closest thing to a standard C++ build system out there. The bundled GUI uses Qt.
  • CRYENGINE :octocat: - But can it run Crysis? Some auxillary tools use Qt.
  • Doxygen :octocat: - The most popular documentation generator for C++, though it supports other languages as well. The bundled GUI uses Qt.
  • Google Earth - The virtual globe.
  • KDE :octocat: - One of the most popular desktop environments for Linux.
  • LMMS - Digital audio workstation.
  • Malwarebytes - Your Windows desktop's personal bodyguard.
  • MuseScore - Music notation software.
  • Parallels Desktop - Consumer-focused virtualization.
  • Qt Creator :octocat: - Something something eating your own dog food. Listed in the official tools, but not listing it here doesn't feel right.
  • Rolisteam :octocat: - Virtual tabletop for remote Role Playing Games.
  • Shotcut - Video editor.
  • RUBE - Level design tool for any game that uses the Box2D physics engine.
  • TeamSpeak - When gamers want to voice chat in a game that doesn't support it, they'll use this.
  • 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?
  • Wolfram Mathematica - Programming language, symbolic calculator, and an engineer's best friend.
  • Yabause :octocat: - Sega Saturn emulator.
  • 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.

Other Relevant Awesome Lists

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.

  • Awesome C/C++ - 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.
  • Awesome C - Same goes for C libraries; might wanna brush up on those RAII techniques while you're at it.
  • Awesome CMake - If you're not using qmake for your project, you're likely using CMake instead.
  • Awesome OpenGL - Qt is commonly used for graphics applications, even providing its own wrappers around OpenGL.

License

CC0

To the extent possible under law, Jesse Talavera-Greenberg has waived all copyright and related or neighboring rights to this work. See the LICENSE file for details.