Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Qt 5 Core Advanced with C++
Rating: 4.3 out of 5(762 ratings)
26,173 students

Qt 5 Core Advanced with C++

A followup to the Qt 5 Core for beginners and intermediate users.
Created byBryan Cairns
Last updated 12/2020
English

What you'll learn

  • Qt 5
  • Qt Core Advanced Classes
  • Advanced C++ techniques
  • Threading
  • Concurrency
  • Sockets
  • TCP programming
  • UDP programming
  • Client / Server programming
  • Thread Pools
  • Multi-Threaded TCP server design
  • SSL sockets
  • Creating SSL certificates
  • How to create libraries
  • Creating dynamic and shared libraries
  • Extending Qt with plugins
  • Extending Qt applications with plugins
  • Using MySQL
  • Database plugins
  • Inserting, deleting, and querying data in a database
  • Testing database drivers
  • Unit testing
  • Qt Test Framework
  • Data driven testing
  • Benchmarking
  • Deploying applications on windows, mac and linux
  • Static builds
  • App Images
  • Compressing application binaries
  • Qt Installer Framework

Course content

6 sections63 lectures12h 6m total length
  • Exploring the current thread9:39

    Explore how threads relate to processes and the cpu's cores, and how the os schedules threads for multithreaded execution. Inspect the current thread, thread sleep, and thread control.

  • Versions - Qt 5 vs Qt 60:51
  • Creating threads12:03

    Demonstrates how to create and move objects to a separate thread in Qt, start timers, and manage threads with signals and slots and shared pointers.

  • Inheriting QThread11:00

    Learn why inheriting QThread is discouraged in Qt 5 core with C++, and adopt the move approach or runnable interfaces with signals and slots for safe threading.

  • Thread lifecycle16:23

    Explore multithreading in Qt by creating a counter on multiple threads managed by a thread manager, moving objects to threads, and coordinating with signals and slots, while avoiding common pitfalls.

  • QThreadPool8:07

    Explore the Qt thread pool design by implementing a runnable class, enabling auto-deleted tasks, thread reuse, and safe background execution within a Qt 5 core advanced C++ context.

  • QMutex3:20

    Understand the mutex concept and how it prevents race conditions. Explore how locking and unlocking enforce mutual exclusion, with non-recursive versus recursive mutex behavior.

  • QMutexLocker13:45

    Learn how a counter is safely updated across threads using a mutex and QMutexLocker in a Qt thread pool, and see the consequences of missing locks.

  • QSemaphore11:13

    Learn how semaphores generalize mutexes by allowing multiple acquisitions and controlled resources, then use a thread pool to queue work and acquire and release resources for each item.

  • QWaitCondition22:02

    Explore the wait condition and producer–consumer pattern in Qt 5 core with C++. Coordinate a buffer, mutex, and signals and slots to synchronize producer and consumer threads.

  • Signals and slots in threads15:23

    Explore signals and slots in threaded apps, comparing direct, queued, and auto connections, and learn to explicitly use a connection to route signals to the correct thread.

  • Intro to QtConcurrent8:19

    Explore QtConcurrent's high level APIs for asynchronous multithreading, using futures and blocking maps to map a function over a list and run tasks in parallel.

  • QtConcurrent::run5:59

    Explore using QtConcurrent::run to execute a test function on a thread pool, returning a future and showing the main thread and pool thread running asynchronously.

  • QtConcurrent issues3:45

    Explore a QtConcurrent issue in C++, a conversion pitfall when passing a name to a test function, and how an array initializer must be initialized as list or string literal.

  • QFutureWatcher6:08

    Explore using a future watcher with Qt 5 Core to run concurrent map operations on a list, multiply values, and wait for finished to observe results.

  • QFuture getting values2:33

    Learn how to extract values from QFuture using mapped futures, using const int, and leverage future watcher to run asynchronous operations in the background.

  • QFutureWatcher Slots12:39

    Explore how QFutureWatcher encapsulates futures with signals and slots to track lifecycle and per-item progress in an asynchronous map, enabling real-time updates in a graphical user interface.

  • QFutureIterator8:09

    Explore iterating over futures in Qt 5 core with C++, using Java-style future iterators, index-based loops, and for-each patterns; there's no single correct method, only preference.

  • QFutureSynchronizer5:24

    Learn how the QFutureSynchronizer coordinates multiple threads to simplify synchronization by adding tasks to a synchronizer and waiting for completion, avoiding a future watcher.

  • Threaded example15:29

    Build a command line interface that starts and stops multiple threads using a worker and a manager, with signals and slots and a background event loop.

  • Section 1 - Assignment
  • Section 1 - Quiz

Requirements

  • Udemy course - Qt Core Beginners
  • Udemy course - Qt Core Intermediate

Description

This is not a beginners course! This is a followup to the Udemy Qt 5 Core for beginners and intermediate users and picks up where they both left off. In this course you will learn how to work with threads, sockets, libraries, plugins, unit testing, and application deployment across multiple operating systems. 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.

Who this course is for:

  • NOT FOR BEGINNERS - You have been warned!