KDAB_Tree_Header_Mobile KDAB_Tree_Header_Web

Trusted Software Excellence since 1999

Jesper K. Pedersen

269 results

In this episode you will learn how to draw the outline and the filling of, say, an elipse; the difference between QPixmap and QImage; how to (almost) implement your own screen saver with a wobbling text with a color gradient through it, and more.

In this module, we will talk about painting your own widgets, and we will see a number of techniques and classes involved in this. We will start with this episode where we discuss the very simplest way to get some pixels on the screen.

When you press Ctrl+k and type a class name, you are asked which version of Qt you want to see that documentation for. 99% of the time, the answer is likely "The latest". You can actually make it show the latest by default, but it is well hidden.

One of the standard communication protocols for web services is SOAP, which is basically XML over HTTP. I wrote an opensource library called KDSoap which makes it easy to do SOAP with Qt (both client-side and server-side). In this video you will see how, starting from a web service which provides a WSDL file to describe its API, KDSoap can generate code to make synchronous or asynchronous calls to the web service.

A very common communication protocol is REST, which is simply JSON over HTTP. Qt has all the building blocks for this, with QJsonDocument for JSON and QNetworkAccessManager for HTTP. In this video, you will see a real-world library that makes REST requests to a web service called TMDB (movie database), as an example.

This video shows an alternative way to a DBus client using Qt, using the convenience of blocking calls but without blocking the GUI thread: all blocking calls are done in a separate thread.

This video shows how to implement a DBus client using Qt, using generated code so that calls and their signature are checked at compile time. Special care is taken not to block the GUI thread, using asynchronous handling only (via signals and slots, and a queue of pending requests)

This video shows how to implement a DBus server using Qt, in order to communicate between two processes. The benefits of using DBus include the fact that it's a standard communication protocol on Unix systems especially, and the ability for Qt to generate classes the client can use to make calls in a type-safe way. For now we'll test the server using the qdbus command-line client, the next video will show how to make calls from C++.

In this video, you will see an alternative to the asynchronous handling done in the previous video. If the socket is managed by a separate thread, it becomes possible to implement the protocol in a synchronous manner, which is much easier.

In this video, you will learn how to use the JSON classes in Qt (5 or later) to implement a communication protocol between two processes. Special care is taken not to block the GUI thread in the graphical client application, using asynchronous handling only (via signals and slots, and a queue of pending requests).

In this video, you will learn how use Qt (5 or later) to develop a server and a client application which communicate using a local socket. You will learn how to handle the various issues that arise from systems made of multiple processes. For instance, what if the client tries to connect before the server is running? What if the server is restarted? What if the server crashes? What if the server is started twice?

This video shows an application that makes synchronous (blocking) and asynchronous (non-blocking) calls from the main thread of a graphical Qt application, and how this affects the user experience.

This video introduces the series, defines the types of inter-process communication and the technical alternatives that will be presented, and advises on what are the things you should know or learn before watching this video series.

Qt has a property system that is used from many places, including Qt Designer, QML, and other language bindings. It can, however, also be very useful on its own, as in the example I show towards the end of this episode. Watch this episode to get a better understanding of how it all fits together.

The class QVariant is a truly important class in Qt, which offers the possibility to provide anything to a function, or return anything from one. If you know modern C++, then it is a bit like std::any, and if you are more familiar with plain C, then you will find some resemblances to its union.

Qt offers a rather wide spectrum of classes for accessing contents of files, including reading and writing bytes to parsing XML, JSon, and CBor files. In addition to that, it also has useful API's for copying files, getting file information (like is it readable), and traversing whole directories. Learn about all that and more in this episode.

Qt comes with a number of container classes. But how do you use them properly, what are the constraints on items you put into them etc. etc.?

Regular expressions is a very powerful tool to parse strings and validate user input. Qt has support for regular expressions via the class QRegularExpression and its helpers.

Qt comes with a string class, as does C++ itself (namely std::string). But in contrast to C++'s string class, Qt's counterpart has lots of powerful utilities built in, which makes it easy to do string operations. Learn all about these in this episode.

In this episode I'll have a look at the tool called pre-commit. It's a tool, as the name suggests, for setting up (and reusing) git pre-commit URLs.

JesperKjaerPedersen

Jesper K. Pedersen

HR Director / COO