1 Star 0 Fork 1

rate / awesome-qt

forked from havealex / awesome-qt 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
CC0-1.0

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:
    • Qt :octocat:
    • Qt Project :octocat:
    • Qt Labs :octocat:

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.
    • macdeployqt :octocat: - Generates macOS application bundles for Qt projects.
  • 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.

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).
  • mupdf-qt :octocat: - Qt wrapper for the MuPDF PDF viewer.
  • neiasound :octocat: - OpenAL wrapper designed for games, with stb_vorbis and libsndfile support.
  • PythonQt :package: - Script your Qt applications with Python. Not to be confused with PyQt or PySide.
  • 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.
  • QtAwesome :octocat: - Add Font Awesome icons to your Qt application. Other icon sets are supported, too.
  • QtLua :package: - Use Lua as a scripting language for Qt-based software.
  • qtruby :octocat: - Use Ruby as a scripting language within your application.
  • QuaZIP :package: - Read from and write to ZIP archives. Uses Minizip under the hood.
  • VLC-Qt :octocat: - Wrapper for libvlc that lets you add a VLC-like media player to your application.

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.

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.
  • 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.
  • Malwarebytes - Your Windows desktop's personal bodyguard.
  • 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.
  • 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.

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.

CC0 1.0 Universal Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. 1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; ii. moral rights retained by the original author(s) and/or performer(s); iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; v. rights protecting the extraction, dissemination, use and reuse of data in a Work; vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. 2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. 3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. 4. Limitations and Disclaimers. a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. For more information, please see <http://creativecommons.org/publicdomain/zero/1.0/>

简介

暂无描述 展开 收起
CC0-1.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/rate_1/awesome-qt.git
git@gitee.com:rate_1/awesome-qt.git
rate_1
awesome-qt
awesome-qt
master

搜索帮助