The Top 100 QML Resources for Developers
If you’re a reader of this blog, you probably know that we have a huge amount of quality material on QML and Qt Quick, among other topics. In fact, there is so much material that it can be hard to find what you need.
If that sounds familiar, you’ll want to bookmark this page! This blog captures a snapshot of the top 100 resources we offer on QML and Qt Quick. This mix of blogs, instructional videos, and other resources has been organized into simple, easy-to-understand categories with simple descriptions added when necessary.
If you’re just getting started with Qt, you’ll want to begin with our training class. And if there’s a topic here you can’t find, you may also want to try using our Content Library Search or visit our YouTube channel for even more content.
QML Tutorials for Beginners
Introduction to Qt/QML – Full KDAB Training Class
- Module 1: Introduction to Qt Quick
- Module 2: User Interfaces basics
- Module 3: User Interaction
- Module 4: Components and dynamic loading
- Module 5: Animations and States
- Module 6: Presenting Data
- Module 7: The C++ machine room
- Module 8: Integrating QML with C++
- Module 9: Model/View from the C++ level
How-To Tutorials
- A 3D Block Building Game in QML
- Qt and the unu dashboard – using Redis and pub/sub
Get the most out of Qt Creator
Maximizing your IDE efficiency
- Qt Creator cheat-sheet – double-sided page of the best keyboard shortcuts
- Sessions in Qt Creator
- Spell Checking in Qt Creator
- Top 7 Shortcuts in Qt Creator
- Writing Qt Creator Debugging Helpers – straightforward variable examination
- Grepping in Qt Creator – getting the most out of search
- Qt Creator Refactoring Part 1
- Qt Creator Refactoring Part 2
- Using Bookmarks in Qt Creator – moving through large code bases
- Why doesn’t my Qt Creator find my files anymore
- Mass Text Editing in Qt Creator Using Macros, Block Commands, and more
- Save Re-compile Time – Include moc Files in Source Files
Customizing the IDE
- Changing the Font to Jetbrains Mono in Qt Creator
- Document Templates in Qt Creator – Part 1 – customizing new files
- Document Templates in Qt Creator – Part 2
- Document Templates in Qt Creator – Part 3
- Document Templates in Qt Creator – Part 4
- Adding CPPreference to Qt Creator – extending the help system
QML Development Best practices
Development Patterns
- Communicating between a View/Delegate and a Model
- A Complete Proxy Model Implementation – Part 1
- A Complete Proxy Model Implementation – Part 2
- No More Booleans! – when _enums and other means are better
- Subclassing isn’t always the solution! – objects in C++ when they make sense
- Checking Your QModelIndex(es) – defensive programming
- Lazy Value – the how and why of delayed computation
- Enum Class and Model/View – static casting that’s safer and less typing
Development Workflow
- My Git Workflow in the Shell and from Qt Creator
- Backing up Source Files Every 10 Minutes on Linux
- Compile Just This File – get it right before building the world
- Git Switch and Restore – recovering repository disasters
- Using Clang-Format to Ensure Style Guidelines
Testing
- Unit Testing from Qt Creator
- Checking for Regression via Screenshots
- Testing QAbstractItemModels on the Fly
Improved Graphics with QML
Graphics Sizing and Scaling
- BorderImage is for Scaling!
- Scalable UIs In QML
- In Pixels we trust – scalable UIs in QML, part 2
QML and 3D
- How to integrate OpenGL code with Qt Quick 2 applications (part 1)
- How to integrate OpenGL code with Qt Quick 2 applications (part 2)
- Integrating OpenGL with Qt Quick 2 applications
- Integrating QtQuick 2 with 3D renderers
QML Components
- QML Component Design – creating unbreakable bindings
- Declarative Widgets – adding Qt Widgets to QML
- Efficient custom shapes in Qt Quick – the perfect mix of triangles and shaders
- Efficient Custom Shapes in QtQuick : Shaders – coding the fragment shader
- QtDD – Breathing new QML life into a QWidget-based app from the 2000s
- QtWidgets and QtQuick Controls – A Comparison
- Migrating to Qt6 – QVariant – solving combobox problems with QVariant
- Writing custom Qt Quick components using OpenGL
QML in-depth for advanced developers
Special Problems
- Fun with Paths and URLs in QML
- QtDD – Insights From Building A Desktop Productivity App Using QML
- Understanding qAsConst / std::as_const
- The C++ Explicit Keyword and Qt – understanding why and when it’s used
- Using strong_typedef with Qt for Improved Safety
- Avoiding QVariant::fromValue around your Own Types
Strings
- Handling a Lot of Text in QML
- Which String Class in Qt Should I Use?
- QStringBuilder – what it is and how to use it
- Converting Enums to and from Strings
Specific Environments
- Automotive Grade Maps and Navigation for Everyone
- Embedding QML: Why, Where, and How
- QtDD – Using QtQuick Designer for Desktop Applications
- Qt on Android: How to create a zero-copy Android SurfaceTexture QML item
- Running QtQuick Applications on the Web
QML Internals
- QML Engine Internals, Part 1: QML File Loading
- QML Engine Internals, Part 2: Bindings
- QML Engine Internals, Part 3: Binding Types
- QML Engine Internals, Part 4: Custom Parsers
- Building Qt – how to build Qt from source
- Reading the Qt Source Code
Indispensable Tools for Your QML Projects
Debugging
- Full Stack Tracing Part 1
- Full Stack Tracing Part 2
- Full Stack Tracing, Part 3
- Fixing bugs via lateral thinking – finding really hard bugs
- Reverse Debugging Using rr – finding bug root causes faster
- Speeding up the Start-up of GDB
- qDebug – Power User – making the best of simple console output
Profiling
- New in Qt 5.10: Diagnostics when breaking QML bindings
- Analyzing Performance of QtQuick Applications
- Profiling QtQuick HMI Performance on Embedded Linux
- How to Profile QtQuick applications on Freescale i.MX 6 with vAnalyzer
- Compiling (Part 1) – Speeding Up Compilation Using CCache, Ninja and Clang + Integration in Qt Creator
- Compiling (Part 2) – Speeding Up Compilation Using PCH Support in CMake
Tools
- VS Code for Qt Applications – Part 3
- KDAB contributions to Qt 5.4: qmllint – identifying QML errors
- Visualizing the Model Stack in GammaRay
- Running clang-tidy and clazy from Qt Creator
- Running clazy and clang-tidy from the Command Line
- Improving My clang-tidy Checks