
Explore how a parent–child relationship in C++ memory management simplifies cleanup, illustrating object lifecycles, heap allocation, and the role of smart pointers to prevent dangling pointers.
Explore QPointer, a templated smart pointer in Qt 5, wrapping a QObject-based widget. See how deleting the heap pointer affects access and how the pointer stays safe.
Explore QScopedPointer as a scoped class that automatically deletes its held pointer when it goes out of scope, avoiding dangling pointers and illustrating lifetime management with tests.
Learn how QSharedPointer uses reference counting to manage object lifetimes, how clear affects references, and how delete later ensures deletion only after all references disappear.
Compare QVector and QList in Qt 5 core, showing templated fill and display and memory layout: QVector uses contiguous memory; QList uses available memory, with a nearly identical API.
Explore QHash and key value paired containers, inserting and accessing values by key, retrieving keys and size, and iterating with for each loops for fast lookups.
Explore QSet, a templated Qt generic container that stores values in unspecified order for fast lookups, with contains checks and for-each iteration, noting that order is not guaranteed.
Explore QMap, a template class in Qt 5 that provides a red-black tree based dictionary with key-value lookups and key-based ordering; it's not positional, so use QVector for positional access.
In Qt 5 core intermediate with C++, the QLinkedList templated class provides iterator-based access and constant time insertions and removals, delivering predictable performance for high-speed network applications.
Learn to use QSettings to save and reload app settings, configure organizational name, domain, and application name, and read values as strings or integers, with OS-specific storage in ini format.
Explore how groups in QSettings act like folders, allowing the same key name in different groups and preventing collisions while saving and reading values with type checks.
Master navigating groups in QSettings by creating and populating a list, using QRandomGenerator for values, and saving and reading grouped settings with begin group and end group.
Discover how the QBuffer provides a Kuzio device interface to a byte array, enabling read and write, opening with a mode, seeking, reading all, and closing the buffer.
Explore how to use QDir to manage directories: check existence, create with make path, rename, remove recursively with caution, and list current and target paths with QString and QFileInfo.
Explore the Qt QFileInfo class and its file info list for listing directories, filtering for files, and retrieving metadata such as name, size, and birth time, with recursive traversal.
Learn to use QStorageInfo to query mounted volumes, identify the root device, and list directories under the root, simplifying storage info retrieval in Qt applications.
Learn to work with actual files using QFile, mastering write and append modes, handling errors, and flushing data to disk for reliable file operations in Qt 5 core with C++.
Learn to read and write files in Qt 5 core intermediate with C++, including reading all, lines, and bytes, and understand buffers versus streams.
Learn how QDataStream streams data into a file with a write-only approach for reliable results. Write and read QString values and integers, and observe how encoding affects the stored content.
Compare QDataStream and QTechStream in Qt 5 core, write a banner and random numbers to a file, and understand how text streams differ from encoded data.
Explore how the qlockfile class provides inter-process locking via a separate lock file to prevent deadlock and concurrent access. It covers short-term and long-term use cases, timeouts, and unlocking.
Install a custom Qt message handler to intercept info, debug, warning, and fatal messages, format them with timestamp, file and line, and write to a log file for debugging.
Create a reusable Qt 5 C++ logger class using static members and a message handler. Attach the handler to route logs to a file or console and validate with tests.
Create and configure a logging category in qt 5 core, adding a network category and its queue representation, then apply filters and toggle debug and info flags.
Explore ascii encoding, the American standard code for information exchange, and learn how data representation is agreed upon for consistent communication, including printable and extended 0–255 characters.
Explore utf-8 encoding and Unicode support in Qt, demonstrating how ascii expands into Unicode and how to handle multilingual text in C++ applications.
Explore how base64 encodes binary data into an ASCII representation for safe transmission in Qt, using QByteArray to encode and decode, with padding and equals signs in examples.
Learn to represent data in hex in Qt 5 Core Intermediate with C++, compare hex to Base64, and understand a contract for encoding and decoding.
Explore how to use QTextCodec to convert between Unicode, UTF-16, ASCII, and other encodings, including testing for valid codecs and round-tripping data.
Learn how Qt 5 core intermediate demonstrates data compression using qCompress and qUncompress, building data, compressing, uncompressing, and comparing original versus compressed sizes to reveal efficiency.
Explore creating a custom, header-based compression system in Qt 5 Core that processes large files in 1 kb chunks to compress and decompress data.
Explore serialisation by writing Qt objects to disk with QDataStream and QFile, including versioning, saving a string and an int, and reading them back reliably.
Master serializing a class in Qt by overloading QDataStream operators, handling a private map, and ensuring a fixed read/write order for reliable save and load.
Explore serializing objects to JSON in a Qt 5 C++ project using QVariant maps, QJson objects, and a converter to write and read JSON documents from disk.
Learn to serialize objects to XML in Qt 5 core with C++. Implement XML read and write using QXmlStreamWriter and QXmlStreamReader, with start document, root element, and item attributes.
Use the qdeleteall macro to delete all pointers in a list, then clear the list to ensure objects are not accessed after deletion and prevent crashes.
Learn why qFill is deprecated and how to replace it with the standard library fill or QVector, ensuring compatibility across C++ by using familiar containers and algorithms.
Replace the deprecated qsort with the standard library sort using begin and end iterators to sort a list or subrange, while generating random numbers and comparing unsorted and sorted results.
Learn why qEqual and qCopy are depreciated and how to replace them with the standard library to compare and copy list segments using begin and end.
Explore macros in Qt 5 core C++, using preprocessor directives and define to create ad, a macro for addition, while noting their power and risks, including pointer and string errors.
Explore how QSysInfo exposes build CPU architecture, kernel version, hostname, and product details, and learn to detect Linux, Windows, and Mac via preprocessor directives for cross-platform code.
Discover how to use QProcess to start external programs, pass arguments, write to and read from them, and manage data exchange for tasks like compression.
Learn how to execute external processes in Qt 5 Core with C++, interpret exit codes, and distinguish zero (success) from non-zero errors for robust control flow.
Learn to build a cross-platform commander with Qt's qprocess, starting external programs, merging standard output and error, and using read signals to read and display output in real time.
This is not a beginners course! This is the second course in the Qt 5 series, and is a follow up to the Qt 5 Core for beginners course. It is highly recommended you complete that course first! There are not a lot of intermediate courses, the goal of this one is to bridge the gap between beginners and advanced programmers.This course continues on to teach the student the core classes in Qt 5. This course overs Qt 5. Because Qt 6 has so many changes, I will re-record these lessons using Qt 6 and place them into a different course, check my instructor profile for updates.
Qt core for intermediate programmers covers
Smart Pointers
QSettings
QIODevice
QFile & QDIR
qCompress
Encoding
Serialization
Design patterns
And much more