
Master the basics of C++, Qt 6 core, and CMake as you learn how Qt is designed and used with C++ in this beginner course.
This beginner course covers C++ and Qt 6 core concepts from a beginner's perspective, and does not cover advanced topics like threading, 3D games, or older Qt versions.
This course targets newcomers to Qt and C++, guides you from basic C++ concepts to programming with Qt, assumes some computer knowledge, and highlights using Google and community support.
Explore course prerequisites, from owning a computer and basic skills to using a command line, and develop basic problem solving while learning C++ from the basics at a rapid pace.
Explore basics like variables, comments, and hello world in the Qt way, using Qt documentation, to build a beginner-friendly foundation in how Qt extends C++.
Brian Karens introduces himself as the Qt instructor, sharing years of Qt experience and his Void Realm's and Void Romes channels, plus a 2020 Qt Champion Award.
Witness real-world Qt programming in real time with minimal edits, seeing mistakes and fixes as they happen, not a polished production studio.
Introduce Qt as a set of C++ libraries, covering core, widgets, and QML; it contrasts desktop widgets with QML, which runs anywhere from PC to space shuttle.
Explore the Qt 6 core beginners course within a broader curriculum, covering widgets, QML, and progression from beginner to advanced, with notes on design patterns and embedded programming.
Discover the scope of Qt 6 core for beginners with C++, and understand why the right once, compile anywhere motto matters as the course targets Qt 6 amid version changes.
Set clear goals for this course to create simple console applications and gain a solid understanding of how Qt works, along with basic Qt core knowledge built on C++.
Qt is a cross-platform C++ library and ecosystem. It spans basic apps to multithreaded servers with a code base across desktop, dashboard, mobile, embedded, and 3d headset touch screen displays.
Qt can build anything you can create in C++, from console and mobile apps to embedded and desktop, with Qt Creator powering many popular applications and devices.
Download and install Qt by navigating its dual licensing model, selecting the open source option for evaluation. Understand cross-platform download steps and licensing basics for open source and offline installs.
Read and follow the installation instructions to install Qt 6 on Windows, Mac, and Linux. Google for solutions as needed, since system differences may apply.
Install Qt 6 on Windows 10 by downloading open source installer and creating a Qt account, then choose a minimal custom setup and use maintenance tool to add components.
Install Qt on Mac by ensuring Xcode is set up, downloading Qt's online installer, signing into a Qt account, accepting open source license, and selecting only the needed components.
Install qt 6 core on linux by updating the system, downloading the qt online installer, creating a qt account, and following open source licensing, then install OpenGL.
Explore the Qt Creator integrated development environment, including projects, examples, tutorials, and a built-in help system. Learn to configure kits, compilers, CMake, build, run, and debug a console application.
Learn how to tackle installation issues in Qt 6 core beginners with C++, review the installation docs, adapt to different environments, and identify missing dependencies with Google.
Acknowledge that bugs arise in software development and that code often doesn't work as expected. Check GitHub first for updates, as I update the source code there before rerecording videos.
Encourage brutally honest feedback to directly shape course updates and future courses, including the Qt 6 core beginners content, and learn how to leave constructive reviews after exploring the material.
C++ is a general-purpose programming language, an extension of C (C with classes) that provides a set of instructions to tell computers what to do, including hardware drivers and servers.
Discover why C++ is fast due to raw memory access and stable long term support, with decades of code that still runs, unlike rapidly changing modern frameworks.
Explore how C++ drives embedded systems, car dashboards, video games, and major software frameworks, and see how Qt simplifies building fast, user-friendly interfaces on top of C++.
Explore the challenges of C++, including a steep learning curve, aging documentation, and manual memory management, while learning a subset of C++ essential for surviving in Qt.
Explore the C++ build process from source code to executable, including preprocessing, compilation into object files, and linking into binaries or libraries.
Explore how the C++ Qt build process differs from standard C++, with the preprocessor running and Qt's moc generating signals and slots, followed by compilation and linking to a binary.
Expect issues as part of learning C++; mistakes happen as technology changes and OS differences complicate debugging. Lean on the developer ecosystem Udemy, Facebook, YouTube to learn from these challenges.
Explore the C++ standard library and its evolution from 1998 to 2020, including templates, containers, and multithreading, and how Qt aligns with these features.
Explore how Qt uses C++ to build its core, leveraging the standard library, pointers, classes, inheritance, and templates, while discussing exception handling, errors, and copy prevention.
Learn just enough C++ to survive in Qt, covering variables, memory and pointers, plus classes and inheritance, from a beginner's perspective, while noting better approaches exist.
Explore hello world in Qt 6 core with C++ using Qt Creator, creating a console application, and understanding build systems from the proprietary Qt build system to CMake.
Explore the Qt build process by comparing CMake and QMake workflows, observing autogen and moc code generation, and building a hello world to produce a runnable binary.
Learn how to use single-line and multiline comments in C++, how the compiler ignores them, and how documentation or self documenting comments (Oxygen) can guide code.
Explore coding standards, styles, and conventions to align team coding practices across companies, noting that Apple, Microsoft, and Google have different approaches while the compiler ignores formatting.
Explore how variables represent things that can change, using a cube to show rotation, orientation, and color. See how modifying a variable updates the object's properties in real time.
Explore how variables in C++ use data types to store a type, name, and value, illustrated with a bool light switch and simple assignment.
Data types define what a variable represents and require values to match the declared type. The example uses spheres for two variables and a cube value, illustrating a type mismatch.
Understand what data types are in C++ and how they define memory usage. Identify int, double, char, and booleans, signed versus unsigned, and implicit conversions in embedded RAM contexts.
Understand that a constant cannot change, or you’ll trigger a build error; use constants for unchanging values like the speed of light.
Learn how constants differ from variables in C++ using the const keyword to define values that never change, such as pi.
Use the enum keyword to represent a set of values with friendly names. Explore color examples, zero based indexing, and constant expressions to create a readable data type in c++.
Explore structs as user defined data types by defining a product structure, adding fields like color and laptop, and examining memory layout, scope, and basic assignments in C++ and Qt.
Explore how arrays function as a zero-based data structure, access elements by index, and handle upper limits, bounds checking, and effects of removal and accessing beyond the upper limit.
Explore how arrays store multiple values in a single variable, using zero-based indexing to access and initialize elements, and compare the array approach with its memory and range checking trade-offs.
Explore arithmetic operators in C++ and learn addition, subtraction, multiplication, and division. See how assignment, increment, decrement, and remainder modify age, older, and younger values.
Explore assignment operators in C++, including plus equals, minus equals, modulus equals, multiply equals, and divide equals, with practical examples starting from 15.
Explore comparison operators to determine if values are equal or not, using equals, not equals, and the greater/less than and equal-to relations, with parentheses clarifying evaluation and boolean results.
Unpack how logical operators control truth values in code for Qt 6 core beginners with C++, using and, or, not, and handling in-between ranges with parentheses to ensure correct evaluation.
Explore how to print with cout and the Qt equivalents like qInfo and qDebug, and learn how C++ standard streams mix with Qt messaging, including namespaces and line endings.
Learn to read user input with cin in a Qt and C++ project, including using the std namespace, prompting for age, and echoing the entered value.
Explain the C++ standard error and standard output, show how to use io streams to print errors, and note colors like white or green for output and red for errors.
Learn to organize Qt messages with QDebug and Qt info, using levels like info, debug, warning, critical, and fatal, and see how to capture them with q_install_message_handler.
Understand flow control as programmatic logic that determines your program's behavior. Evaluate true or false to decide whether to continue, with you as the developer guiding the flow.
Explore how flow control governs the execution of your program, using if statements and loops to direct start to finish logic and plan future function calls.
Learn the if statement as the foundation of flow control in Qt with C++, evaluating true or false to decide actions like under-18 alerts or adult access.
Explore if and else for basic flow control in Qt and C++, using age examples to show true/false branches, else if, and coding style choices across one or multiple lines.
Explore the ternary operator in Qt C++: use the question mark syntax for a one-line if-else, and handle age validation with qInfo or qFatal.
Learn how to use the switch statement in C++ to simplify conditional logic, with cases, defaults, and breaks. The lecture demonstrates fall through behavior and practical age-based examples.
Explore how loops repeat code until a stop condition is met, using a small example to show stopping with a counter or a specific condition.
Explain how do-while and while loops repeat code, showing when to evaluate the condition before or after execution, with practical counter examples.
Learn how a for loop operates on a definite range, starting at zero and ending at a definitive point, and how to loop through every element of an array.
Learn how to use for loops to iterate over a range and arrays, with start, end, and step, plus beginner-friendly safety checks.
Develop an age calculator in Qt 6 core with C++, read user input, use an if statement to validate age 1 to 120, and show dog years or a warning.
Learn how functions break code into reusable blocks, reveal scope concepts, and enable building complex programs through calling patterns and structured decision logic with if and switch statements.
Explore what functions are in C++, focusing on the main function as the entry point, defining and calling named blocks, and enabling code reuse through scope, parameters, and includes.
Learn how function parameters and return values enable data flow between main and functions, with examples like calc, cat years, and dog years.
Learn how to place flow control inside a function in a C++ Qt 6 project, validate ages with if statements, and compute dog years and cat years via offsets.
Explore function overloading in C++, using the same name with different parameters. Understand ambiguity, type conversion pitfalls, and strategies to fix with explicit types or distinct overloads.
Explore passing data by value or by reference in C++: understand copies, memory, and scope, and how ampersand references modify the original.
Learn why a function inside a struct can compute data like kilograms, but you should avoid this pattern and prefer outside functions or later use of a class.
Explore how functions return values in C++, including by value, by reference, and by pointer, with Qt objects. Understand memory management and stack vs heap with new and delete.
Classes act as blueprints to create objects in C++ within Qt 6 core beginners course. Observe how a single class can produce objects, like houses in red, yellow, or green.
A class is a blueprint for creating objects, defining properties and functions that can be instantiated as many items as needed, with inheritance and interfaces shaping complex types.
Learn to create objects from a class blueprint in Qt using header and source files, QObject inheritance, and the Q_OBJECT macro, with constructors and simple examples.
Explore the Qt object lifecycle by building a laptop class with QObject inheritance, constructors and destructors, and learn how to manage copies, memory, and scope in C++.
Explore inheritance in Qt 6 core with C++, where a base class like Person provides shared members, and derived classes such as Mark and Jane inherit it.
Explore class inheritance in C++ with Qt, from animal examples to an inheritance chain spanning mammal, canine, and feline, and learn why Qt discourages multiple inheritance in favor of interfaces.
Learn how interfaces provide a contract between objects to replace complex inheritance, using virtual functions in C++ to implement toaster, freezer, and microwave in a Qt appliance example.
Mastering overriding in C++, redefining a base class function speak in a derived lion, and using base class scope to access feline's original behavior.
explore the QObject base class in Qt core, and how the QObject macro enables the meta object system with signals and slots, runtime type information, and memory management.
Design and test a Qt-based age calculator class that demonstrates encapsulation with private member variables, getters and setters, and conversions to dog, cat, and human years.
Explore lexical scoping across global, class, function, and statement scopes, showing how a global variable remains accessible in inner scopes. Note that scope variables cannot be accessed from outer scopes.
Explore how scope in C++ defines where a variable lives from global to class, function, and block, and how namespaces and copies prevent naming collisions and enable encapsulation.
See how a global variable can cause naming collisions and data corruption when multiple blocks or threads access it. Declare variables at the lowest possible scope to prevent these issues.
Contrast scope and namespace by explaining that scope is the general concept where variables live, while a namespace is a container that declares names inside a specific scope. Use examples like global scope, and multiple cat classes in different namespaces to avoid collisions, accessed with the scope operator ::.
Explore static (lexical) scoping, a top-down approach in C++ for managing variables, and contrast it with dynamic scoping to understand output differences and avoid global collisions.
Explore function scope and lexical scope in C++, showing how variables live in functions and blocks, and how memory addresses reveal interactions with parent scopes.
Learn how class scope works in C++. Each object has its own scope, variables may be shared by static members, and the this pointer helps distinguish parameters from members.
Examine the perils of global scope in C++; accidental overwrites, naming collisions in the global namespace, and why using scope operators and lexical scope judiciously protects production apps.
Explore static scope in classes, where a static variable is shared by all instances and acts like a class-level global. Learn initialization, scope, and pitfalls with a Qt C++ example.
Discover how static functions in a class let you run code without an instance, and when this approach conflicts with non-static members and this in C++ Qt 6.
Learn what a pointer is by tracing it to a memory address. Compare copying a large object with passing by address and managing memory directly with new and delete.
Explore stack versus heap memory in C++, highlighting how local variables live on the stack and heap allocations use the new keyword and the freestore, with pointers managing object lifetimes.
Discover how pointers avoid large copies by referencing memory, learn that the pointer is a variable not the object, and use the address of operator and arrow to access memory.
Master pointer memory management by creating pointers on the stack, allocating on the heap with new, and destroying with delete, to prevent memory leaks and data corruption.
Learn how automatic memory management works in C++ with the standard library and Qt by using a unique_ptr to manage a QObject-derived test object, showing construction, use, and automatic destruction.
Explore how Qt's parent-child relationships manage memory for QObjects. Create a parent and child with new, then delete the parent to auto-destroy the child.
Understand why QObject cannot be copied and how returning a pointer avoids copying, enabling inter-object communication via signals and slots. Learn that heap allocation requires deletion to prevent memory leaks.
Learn how the disable-copy macro prevents copying and moving Qt objects, examine QObject and QtGlobal, and understand why copying and moving can disrupt signals and slots in Qt 6 core.
Learn cross platform programming with Qt and C++, write once, build anywhere – Qt runs on virtually anything. You probably have applications built with Qt running on your computer, smart phone, television, and other electronics.
No experience necessary, this is a beginners course that will teach you the foundations of both Qt 6 and C++. This course is meant as a direct replacement for an introduction to C++ class. This course starts off with simple topics such as "what is a variable" and ends with some basic Qt classes and how to work with them. The main focus of this course is to get the student a solid foundation to move forward from. At the end of this course you will be able to create basic applications using C++ and Qt 6. This course is a complete re-record of my award winning Qt 5 for beginners course, covering new material along with using CMAKE instead of QMAKE.
We will start with basic foundational concepts such as variables and each section moves into more complex topics such as templates, classes, error handling and how to use some of the Qt 6 classes includes in the core library. This course uses C++ and Qt Creator which is the best IDE for developing cross platform applications using Qt that can run on Windows, Mac, Linux, embedded devices such as a raspberry pi, iPhone and Android.
This is the starting point for all other Qt 6 courses on that are coming soon to Udemy as I re-record them with the newest technology.
Qt 6 Core Intermediate
Qt 6 Core Advanced
Qt 6 Widgets
Qt 6 QML
Qt 6 Design Patterns
Featuring closed caption in: English, Hindi, Korean, Spanish, Traditional Chinese