David Faure
54 results
In this video, you will learn about communicating between two threads using Qt signals and slots and what is really happening under the hood when you do that. With the help of didactic diagrams, you will learn different ways to set this all up, including possible pitfalls.
This video provides answers to the following questions: Can you call methods on an object shared between threads? Can you call the same method in different objects? What about QObject, is it thread-safe?
If you think bool is atomic (and therefore needs no mutex) or if you think volatile is useful in multithreaded programs, you should watch this video. Also, you will learn two different ways to implement asking for a QThread's run() method to finish.
After a short presentation of a QThread without an event loop, this video will tell you about threads with an event loop. This allows handling events for objects in secondary threads, which is necessary in order to be able to call slots on these objects.The video then presents two different ways to do this: creating both the thread and the worker at the same level, or encapsulating the thread into the worker.
In this video, you will learn about the three ways to create threads in Qt (did you know about QThread::create?). You will also learn how to wait for threads to finish, what can and cannot be done in a secondary thread, and how to properly destruct QObjects used in threads.
This video introduces the series, defines multithreading, and advises on the things you should know or learn before watching this video series.
When using Qt's model/view framework, filtering has always been very easy with QSortFilterProxyModel. To filter a list using text typed by the user in a line-edit, you have certainly been applying the standard recipe: instantiate the proxy; insert it between view and source model; connect the lineedit's textChanged signal to the proxy's setFilterFixedString slot; done! […]
A retrospective on the KDE community from 20 years ago and how things were done back then, with an emphasis on community spirit and fun facts. Over time, the KDE community has seen many people join and leave, as with any open source community, which means that very few people in the current community still […]
This KDE community retrospective explores development culture from 20 years ago, emphasizing community spirit and fun facts. It shares initial KDE culture with current generations, including surprising development practices (pre-CVS version control) and highlights how architectural elements now considered fixed were once subject to greater creativity, potentially encouraging renewed innovation.
Q & A session at Qt Developer Days 2014 with discussions around how to and why to contribute to Qt. Panelists include David Faure, Kévin Ottens, Olivier Goffart, Lars Knoll and Thiago Macieira.
Additional Qt libraries outside Qt Project
13 March 2015
Abstract: This presentation will start by explaining the concept of inqlude.org and showing some of the libraries available there, pointing in particular to those that will be useful in the rest of the presentation. The multiple ways to use inqlude.org will be discussed: browsing the website and downloading sources, using the command-line tool to install […]
This presentation explains the concept of inqlude.org, highlighting some of the libraries available there.
Last week I visited a new customer who is making medical and industrial devices which have one thing in common: image and video capturing, and letting the user save these files onto a USB key. These devices run embedded Linux and the application is done in Qt (and gstreamer for the video capture). The new […]
How to use helgrind to debug multithreaded Qt applications
Finding thread race conditions in Qt applications
(NOTE: this blog post has been edited many times since its original publication) You've heard of valgrind before, its default tool (memcheck) is such a life saver, being able to detect memory-related bugs in your code (leaks, double deletions, use of deleted memory, use of uninitialized memory, etc.). Well, it turns out that valgrind also […]