
Equip seasoned developers to migrate from Qt 5 to Qt 6, focusing on real migration issues with existing code and code examples, not a beginner's primer.
The course outlines the goals of migrating from Qt 5 to Qt 6, highlighting changes, migration hurdles, and backwards compatibility, with practical CMake workflows and code porting experiments.
We created this course to help you migrate to Qt 6 by addressing breaking changes from Qt 5, backwards compatibility, and changes to the make process for rapid adoption.
Brian Kerans, founder of Void Realm's, teaches C++ with cat-filled videos that sparked a thriving Facebook group and course offerings.
Qt 6 released ushers in full C++17 support, a next-gen graphics architecture, and unified 2D/3D for Qt Quick, with CMake replacing qmake for build and Qt Widgets' future.
Explore qt 6 technical specifications, including rendering hardware interfaces (direct 3D, OpenGL), qt quick 3D integration, desktop styling controls, and dpi fractal scaling for mobile and embedded devices.
Review the currently supported platforms for Qt 6 before diving in. Linux versions, macOS Xcode requirements, Windows toolchains, and Android and iOS tweaks can affect compatibility.
Learn to use the official Qt 6 documentation to troubleshoot changes and navigate modules such as networking. Resolve signals and slots issues by consulting the docs and following precise references.
Explore changes to the Qt modules with a fast track guide that shows what’s broken and how it impacts your code. Access concrete code examples to fix issues efficiently.
Explore what's new in Qt 6, including changes to the build system with Semak and NINJA and the expanding module landscape, plus Qt5 core compatibility APIs for minimal-effort API reuse.
Explore migrating from qmake to CMake with minimal effort while confirming qmake remains usable in Qt 6 projects, and learn how to set minimal Qt versions and build settings.
Explore the anatomy of a cmake project for qt 6, from minimum version and project name to finding packages, specifying components like core, and building and linking an executable.
Explore migrating to Qt 6 by building a widgets application with CMake, including project structure with headers and sources, UI design, drag-and-drop controls, and platform-specific considerations like OpenGL on Linux.
Build a Kümmel project with CMake and Qt Quick, configure qml resources, and run a minimal setup to demonstrate Android compatibility and debugging tips.
Customize the Qt 6 migration template by deriving the project name from the folder using CMake's filename component, replacing spaces with underscores, and avoiding hard-coded names, ensuring reliable builds.
Learn to migrate a desktop Qt project to Qt 6 using cmake, manage files and imports, and troubleshoot QML menus and dialogs amid breaking changes.
Examine a password validator built with the chain of responsibility pattern in Qt 6, and explore migration from QRegExp to Q regular expression and the core compatibility model.
Migrate a widgets dialogue example to Qt 6 by integrating core, gui, and concurrent modules and adjusting to the updated concurrent run signature, including thread pool behavior.
Explore migrating to Qt 6 by building a Kümmel QML interface, converting widgets to quick, using concurrent features, and debugging dialogue property changes and run-time issues.
Explore migrating from older to newer Qt versions by identifying deprecated sprintf usage, replacing it with asprintf, and converting a project to cmake while validating build and runtime behavior.
Convert a console UDP chat demo to Qt 6, using Qt Concurrent in a C++17 project to enable networked chat on port 20 20.
Explore client–server network with Qt sockets, diagnose deprecations and socket errors, and implement signals and slots using QAbstractSocket and QTcpSocket in a migration to cmake-based projects.
Explore migrating to Qt 6 by posting data over SSL using http post with Postman Echo, and navigate deprecations and the new plug-in style network access manager changes.
Explore migrating a TCP server to Qt 6, addressing deprecations, abstract socket changes, and updating data types from QString to QByteArray UTF-8 to keep the server running.
Explore Qt's property system by implementing a property with a getter, setter, and change signal, while navigating covariance issues and C++11 to C++17 migration challenges.
Learn how migrating to Qt 6 changes date and time handling by replacing system local date with ISO date or text formats in Qt Core.
Migrate from deprecated linked lists to the standard library in Qt 6 by replacing them with std::list or a queue class, and evaluate compatibility options.
Migrate to Qt 6 by understanding QByteArray changes and deprecations, replacing append with toUtf8 or toLocal8Bit, and fixing build issues in a simple console project.
Migrate a simple Qt project to Qt 6 by avoiding endl and converting to cmake. Resolve vtable errors by adding headers and sources, and use QDebug and QInfo for logging.
Explore migrating to Qt 6 by debugging a simple console app that uses QTextCodec, and learn how to install and enable the core five compatibility module to resolve the issue.
Diagnose XML data handling in Qt 6 by resolving a mismatch between string view and character arrays, and fix it by converting the view to a string for reliable comparisons.
Discover how Qt 6's QSysInfo changes affect kernel type and version, machine and machine ID, and product type and version, and consider compatibility options or OS APIs for cross-platform access.
Explore migrating to Qt 6 by examining widget changes, deprecations, and flags handling, and resolve build issues by aligning semak and makefiles while noting widgets' future relevance.
Explore migrating to Qt 6 by implementing a tri-state checkbox with cute widgets, handling API changes like item flag updates and ensuring backward compatibility across environments.
Learn an incremental migration strategy to Qt 6, handling breaking changes from Qt 5.12 to 5.15, detecting deprecations, and achieving a straightforward build with a simple clipboard example.
Explore Qt 6 migration with modules 6.1 and 6.2, noting state machine issues, add-on module gaps, and a documentation-guided path toward long-term support.
Explore how Qt official support works for paying customers, noting open source limitations, with standard and premium plans, educational options, and dedicated help, to fit commercial needs.
Navigate Qt forums and other resources to get support without commercial licensing, explore the marketplace, official documentation, the wiki, and post clear, polite questions about your problem.
File a bug report in Qt's bug tracking system when you encounter issues and check for bugs, expect a review within 48 hours with suggested workarounds or related known issues.
Tap into the Void Realm's Facebook group and YouTube channel, an unpaid, senior-level developer community for quick, specific help with migrating to Qt 6.
Moving between versions presents its own challenges. This course covers a wide range of technologies using Qt 6, we will migrate existing Qt 5 console, Widget and QML GUI applications to the Qt 6. Designed give experienced developers a first hand look at code changes from Qt 5 to Qt 6 and what you can expect when attempting to migrate to Qt 6. This course is not for the beginner, and is hyper focused on code migration issues.
I took all the Qt code I have written to date, and ran the projects through a series of automated tests - this is literally hundreds of projects ranging in complexity of "hello world" all the way to high performance multi-threaded TCP servers, and collected 20 real world examples we will dive into. We will cover how to examine code, review failures to compile along with cover backwards compatibility.
The code used in migration testing was imported in the previous Qt 5 courses:
QT 5 Core beginners with C++
QT 5 Core intermediate with C++
QT 5 Core advanced with C++
QT 5 Widgets for beginners C++
QML for beginners with Qt 5
QT 5 Design Patterns
Testing each project using the following pattern:
Running the code in Qt 5
Converting the project to CMake
Running and fixing the code in Qt 6
Check with official documentation as needed
This course expects the developer to have a solid understanding of Qt, QML, Widgets and C++ before enrolling.
We will also cover some basics of CMake, including some troubleshooting steps for when your project won't load or fails to compile.
CMake templates also included.