
Introduce the Qt framework and QML, a declarative UI language in Qt Quick, contrast it with C++ imperative programming, and learn via live, actionable examples.
Install Qt and Qt Creator on Windows using the open source online installer, with a nearby mirror. Create a Qt Quick application and review main.cpp and main.qml, then build.
Install and configure Qt and Qt Creator on Linux, select mirrors, ensure dependencies, then create and run a starter QML project.
Learn to run qml code in Qt six using Qt Creator projects, the QML runtime tool, and the Qt Creator UI prototype wizard through a simple hello world example.
Explore the Qt6 QML project structure by examining Cmakelists.txt, main.cpp, and main.qml, learning how to configure CMake, find and link the Qt quick module, and build the executable.
Explore the basics of QML syntax and element hierarchy, build a sample app with rectangles and circles, and master data types, property bindings, and interactive property handlers.
Explore basic QML syntax by building a window with rectangles and circles, control dimensions and positioning, apply radius and anchors, and lay out elements in a row with bindings.
Explore the fundamentals of qml data types and how to use properties to drive your interface, from booleans, integers, doubles, strings, colors, and rectangles to dates, fonts, and arrays.
Learn how property bindings in QML link properties like width and height so changes propagate automatically, with practical examples of rectangle bindings, anchors, and interactive updates.
Explore the Qt global object in QML to quit applications, list font families, hash strings with MD5, and open urls or local files.
Learn how property change handlers in QML trigger on every property update. Use on width changed and on name changed for built-in and custom properties to drive interactivity.
Learn the foundations of QML by building a basic app with rectangle and row layouts, spacing, color, and click responses while mastering property bindings and the Qt global object.
Explore rectangle, item, and text in QML, learn to group elements as a container, and use the image element and resource system with Qt6 CMake for efficient loading.
Learn how the item element acts as a nonvisible container in Qt6 QML to group rectangles and text, and master grouped properties like border and font with different syntaxes.
Explore the image element in QML and load images from the working directory, Qt resource system, full paths, or http URLs, with properties and cmake setup tips.
Explore loading images from the Qt resource system using sh add resource or sh add resources, or embed resources in a QML module with Qt add QML module.
Explore how the rectangle, item, and text work together in QML, and source images from the working directory, resource system, full path, or internet with Qt six and CMake.
Organize qml code into reusable components by creating custom modules. Expose properties and methods, use external files or in-file components, and explore qml modules and qml dir in Qt six.
Build reusable QML components by extracting a button into an external file and exposing width, height, and text. Use row and column layouts to arrange them and emit click signals.
Explore creating and using custom QML components in place or with a loader, using component elements, item properties, and signals to build interactive buttons.
Package external qml components as a qt 6 qml module with cmake, then import and use it in the main app via add subdirectory and a dedicated import path.
Discover the legacy approach to building QML modules with qmake, using a QML dir file, module naming, and resources, plus import path setup in main.cpp.
Extract qml code into reusable components, export width and height, expose or nest properties, and build qml modules with folders and cmake to organize projects in Qt six.
Explore the signals and slots mechanism in QML to enable communication between components when events occur. A signal emits on events like a button click, and a handler responds.
Explore signals and their handlers in Qt6 QML, wiring mouse area signals like clicked, double clicked, entered, and wheel to responsive handlers that access mouse event parameters.
Explore syntaxes for handling signal parameters in QML, using on clicked, a function with a mouse parameter, and arrow functions, to read x and y positions.
Discover how QML generates property change signals for built-in and custom properties. Use on width changed, on height changed, on color changed, and on description changed with property binding.
Learn how the QML connections element lets you handle signals from outside the source, using a target, with onClicked and onDoubleClicked handlers, demonstrated in a mouse area.
Explore attached signal handlers in QML using the component attached type, wiring oncompleted and on destruction to load startup data and save state before the app dies.
Learn to define and emit custom signals in qml, including a greet signal with a string parameter, and handle and fire it from a rectangle on mouse click.
Connect a custom handler to a QML signal by defining a respond your way function, linking it to the greet signal, and triggering it via a mouse area.
Connect signals in Qt6 QML to other signals, creating a chain where a greet signal triggers a forward greeting and a final handler with a custom response.
Learn to send and receive signals across QML components using a notifier and receiver, binding the count to display text and exploring oncompleted connections.
Discover how Qt6 QML signals handle multiple parameters, including last name, first name, and age, and learn to omit trailing parameters using underscores.
Master signals and slots in QML by wiring signal handlers, passing parameters like click coordinates, using connections and attached signal handlers, and emitting custom signals across components to boost interactivity.
Explore user input in Qt6 QML. Implement text input and multi-line text edit, handle mouse area clicks, and use the keys attached property for navigation and focus management.
Explore how to use the text input element in Qt6 QML to collect single-line plain text in forms, and how signals like accepted, editing finished, and text edited manage input.
Create an external, reusable labeled text input component in qml by wrapping label and text input in a row, exposing label, placeholder and text properties and an editing finished signal.
Explore the Qt6 QML text edit element for multi-line text, wrap mode, and rich or plain text via text format.
Explore mouse area input in Qt6 QML by clicking to move a blue rectangle, tracking wheel for position and angle, and dragging along the x axis with bounds.
Discover how the keys attached property enables keyboard handling in Qt6 QML, using digit key signals and the general pressed signal, with event forwarding and modifiers.
Learn how to use the key navigation attached property in Qt6 QML to move keyboard focus between visual elements, using left and right arrows and color cues to show focus.
See how the focus scope element manages keyboard focus across QML components. Build two rectangles to move focus between them and resolve focus conflicts in QML with keys attached property.
Explore QML input features: single-line text input, multi-line text edit, mouse area for clicks and drag, and keys attached property with focus navigation and focus scope.
Explore how JavaScript fits into QML, making interactivity seamless with handlers and JavaScript functions for events like button clicks, and learn safe usage rules.
Discover how JavaScript powers lightweight interactivity in QML through property bindings, functions, and signal handlers, enabling responsive UI effects like color changes and drag-driven animations.
Explore how QML handles function scope by creating a global min function accessible everywhere, then see how nested functions require referencing the containing element's ID to be called.
Discover how to import JavaScript from an external file into a Qt6 QML project using direct import, with cmakelists.txt integration and a greeting function invoked on click.
Learn about JavaScript indirect import in Qt6 QML by chaining utilities across files, with import syntax and impact on readability.
Discover how to use Qt.include to access functions from a distant JavaScript file in a main QML file, and why this deprecated approach should be avoided in new code.
Explore how JavaScript modules organize QML apps, learn to export and import functions with the .mjs extension, and manage what stays private versus exposed to the main QML file.
Organize QML projects by structuring code into components, utilities, and constants modules; share code between QML projects; expose a button component and JavaScript utilities with constants for sizes and themes.
Review how JavaScript appears in Qt6 QML apps, including property bindings, functions, and signal handlers. Note imports, indirect imports, include caveats, and JavaScript modules in QML.
Explore QML positioning mechanisms, including absolute x/y positioning, anchor-based relative placement, and row, column, and grid positions, plus responsive layouts and flow behavior for wrapping.
Explore anchors in Qt Quick to position items relative to others, building a grid of rectangles with left, right, top, bottom, and center anchors.
Master qt6 qml anchoring by using margins and offsets to control space around anchor and center lines; margins require a matching anchor.
Explore how to position items in QML using row, column, and grid, manage spacing and column counts, and apply alignment and layout mirroring for flexible layouts.
Explore qml layouts like grid, row, and column to build responsive user interfaces with the Qt Quick Layout module, including a grid of rectangles with alignment, fill, and span properties.
Learn how the QML flow element arranges child items by wrapping them like words on a page, with configurable spacing and layout direction for left-to-right, top-to-bottom, or right-to-left layouts.
Master relative positioning in QML with anchors, margins, and offsets, and learn to use row, column, grid, and flow layouts plus spanning to build flexible UI.
Master Qt quick controls to speed up QML ui creation with ready-to-use components like sliders, combo boxes, and buttons. Import quick controls two and explore QML types for fast interfaces.
Explore the button component in Qt Quick Controls, style your app with material, universal, fusion, imagine styles, and respond to clicks using signals from the abstract button.
Start by implementing a busy indicator using Qt Quick Controls to signal background activity, and control its running and visible states with two buttons in a centered column layout. Learn to toggle the indicator on and off, and observe how visibility affects layout space.
Learn to use the checkbox quick control in Qt6 QML to let users select multiple options, with checked, text, and enabled properties.
Explore the combo box in QML, including non-editable and editable modes, using a model and list model, with on activated and accepted handlers and console log of index and text.
Learn how the delay button in Qt Quick controls uses a progress bar to enable the button only after reaching 100%, preventing accidental clicks in QML applications.
Learn to implement a dial control in QML, using a knob to select a value from a defined range (1 to 100), with wrap options and value change handling.
Use the frame control to create a visual border and group three buttons in a column layout. Style with Qt quick controls two (material or universal) in qml and cpp.
Wrap radio buttons and checkboxes in a group box to manage exclusive, multi-select options, and control enabling of a group via a checkbox in QML with Qt Quick Controls 2.
Explore swipe view and page indicator in Qt6 QML to swipe through image pages, bind current index bidirectionally, and customize indicators for a polished UI.
Learn to use the Qt quick progress bar in qml, bind a dial to update a determinate progress bar, and employ an indeterminate bar when progress data is unknown.
Learn to implement a range slider in qml that uses two handles to select a minimum and maximum range, starting at 25 and 75, with change events.
Explore Flickable and scroll bar in QML to scroll through elements beyond the visible screen, set content height, and understand how Flickable underpins list and grid views.
Explore the Qt6 QML slider control, using a single handle to set a value within a range and drive a progress bar, with live updates via valueChanged and optional orientation.
Learn to implement switch controls in Qt6 QML with material style using Qt Quick Controls 2 to toggle wifi, bluetooth, NFC switch, including enabling and disabling and handling checked changes.
Learn to build a Qt6 QML page with a header, content area, and footer, using a swipe view and a tab bar for page navigation.
Learn to use the text area and scroll view controls in Qt Quick, with a placeholder, multi-line text, word wrap, and scrolling, plus reading and submitting text.
Explore text field and label in Qt6 QML, a single-line input for forms that collects user information with placeholders and signals like editing finished.
Learn to use the split view control in Qt QML to divide a window into sections with a draggable splitter, adjusting orientation, preferred width, and minimum width for desktop apps.
Explore the drawer control in qt6 qml, a left swipe side panel for mobile and embedded apps, featuring a header, interactive items, and auto-closing behavior.
Explore building a desktop-style Qt application with the application window, a menu bar, header toolbar, and footer, and manage the main content using a stack view with push and pop.
Finish the chapter by practicing the Qt Quick Controls module, including checkbox, combobox, delay button, and dial, to build a polished graphical user interface in QML.
Explore dialogues in QML and learn how pop-up dialogs prompt user actions, such as confirming or canceling operations. Examine colour dialogs, font dialogs, and file dialogs.
Explore the color dialog component in QML to let users pick colors, apply the selected color to a rectangle background, and handle accept or reject events.
Open a file dialog in a QML app to select files from the file system, then bind the chosen path to a QML property and display it using name filters.
Learn to use the folder dialog in Qt6 QML by building a button-driven app that shows the chosen folder path in text, using the currentFolder property.
Learn to use the Qt Quick font dialog to select a font family, style, and size, and apply the chosen font to on-screen text.
Configure a qt quick message dialog in qml with a title and message. Include ok and cancel buttons and handle accepted or rejected with logs.
Learn to build custom dialogs in Qt6 QML by exploring gallery examples and implementing message, confirmation, content, and input dialogs.
Explore qml dialogs—color, file, font, and message dialogs—and build a custom dialog while applying chosen colors to a rectangle; learn by stealing and adapting Qt Creator examples.
Qt6 QML is the latest and greatest technology from the Qt Framework, to build slick looking , fluid, dynamic and cross platform User Interfaces that can run mobile devices(Android,IoS, touch devices (embedded) and any major desktop platform out there(Linux,Windows,Mac). Qt Quick can be used to build stand-alone applications, but it can also be interfaced and/or extended with a C++ back end.
The main aim of this course is to help you succeed in becoming a Qt6 QML GUI Designer and do so in the most effective amount of time possible. The course is packed with lots of straight to the point, easy to understand demos, that are carefully designed to help you master a given Qt Quick UI development topic at hand.
The target student is anyone willing to add Qt Quick/QML UI design to their stack of skills. While Qt Quick is built on top of Qt and C++, no knowledge of Qt or C++ is required. The course will equally be useful to both designers willing to jump into Qt Quick and existing C++ developers willing to level up their skills in fluid UI design.
We start by getting your development environment set up and get you to run your first Qt Quick application. We then jump into topics like
Dissecting the QML Syntax , where we explore subjects like the QML syntax, Basic Types of QML, Properties and Handlers,Property Binding and the Qt Quick Global Object;
Qt Quick Basic Elements, and look at elements like Rectangle,Text, Image and Item;
External Components, where we extract QML code into external files and import that into other files. We'll also explore the great subject of QML modules that have been supercharged with CMake in Qt6
Signals and Slots;
Working with Javascript, where we explore the javascript environment available to you in QML, where and how to type your Javascript code in QML files, functions and scope and importing external Javascript files;
User Input Elements : TextInput, TextEdit, MouseArea and drag and drop, Keys Attached Properties, KeyNavigation and FocusScope
Qt Quick Positioning and explore subjects like Anchors, Positioners, Layouts and Flow
Qt Quick Controls where we explore a host of Ui Components available and ready to be consumed by your awesome apps ;
Dialogs : ColorDialog, FileDialog,FontDialog, MessageDialog and Custom Dialogs
Model , View and Delegate where we explore the pieces of the puzzle needed to take advantage of the Model View Delegate Architeture in Qt Quick
Transitions, Transforms and Animations : Oooh Animations! This is the most fun and captivating subject for me in Qt Quick. We take you on a tour of how you animate your Qt Quick Components and bring your designs to life using tricks like states and transitions.
Network : We show you how to download HTTP data using XmlHttpRequest and how to consume REST APIs in your Qt Quick apps using the same Javascript Object
Storage : We first use the Settings component from the Qt.labs module to save and load your applications settings and do the same thing using the LocalStorage module that is backed by an embedded SQLite database.
Qt is the platform of choice for thousands of software projects and some of the most successful companies on the planet. Learning Qt Quick will certainly level up your abilities in taking advantage of this rich and awesome framework. Please check out some of the preview videos and lets get you STARTED building slick and fluid User Interfaces with Qt Quick.