In the previous blog post of this series, we discussed KDToolBox::QtHasher, a helper class that allows us to use unordered associative containers datatypes which have a qHash() overload but not a std::hash specialization. The majority of Qt value classes indeed are lacking such a specialization, even if they do provide a qHash() overload. For our […]
Author Archives: Giuseppe D'Angelo
Single-Shot Signal/Slot Connections
Sometimes it’s useful to establish a connection between a signal and a slot that should be activated only once. This is not how signal/slot connections normally behave. Remember that, when a connection is established, it will stay active until: the connection is explicitly disconnected; or the sender object is destroyed; or the receiver object is […]
Signal/Slot Connection Throttlers
Another day, another blog post about KDToolBox, KDAB’s collection of miscellaneous useful C++ classes and stuff. Today, we’ll talk about ways to throttle your signal/slots connections — in other words, how to activate a slot less often than the emission rate of the signal it’s connected to. The usual reason why you may want something […]
Using Qt Datatypes in Standard Library Unordered Containers
In the previous blog post about qHash, we explained: how to declare an overload of qHash for your own datatypes, how to hash Qt datatypes for which Qt does not provide a qHash overload, and why you can’t use a type from the Standard Library (or just another library) as a key in QHash (newsflash: […]
Qt Embedded Days 2021
This brand new online conference hosted by KDAB offers in-depth technical topics from embedded developers for embedded developers – especially, but not exclusively, for those working with Qt on Embedded Devices. The call for papers is now closed and the program will be announced as soon as the committee has made a final selection. We […]
KDSingleApplication: a class for single-instance policy applications
Another day, another blog about some of KDAB’s utility classes. Now it’s the turn of KDSingleApplication, a class that helps implement applications that follow the single-instance policy. What is a single-instance policy? Single-instance policy refers to those applications that want to spawn a unique instance for a given user session. Even when launched multiple times, […]
Beware of Qt Module-wide Includes Save the planet by reducing compilation times!
You know the drill: in C++ you need to #include header files that declare the types and functions from the libraries that you use. Qt is no exception in this regard. Qt follows a very nice convention for its own datatypes: if you need to use a type called QType, then use #include <QType>. This […]
There and Back Again what it entails to fix 10-year-old bugs in QNetworkAccessManager
A few days ago, a customer using our KD Soap library reported an interesting problem with it. The library worked perfectly to access the SOAP server, but there was some noticeable latency when doing a series of requests in short succession from the client. This latency should not have been there, as both the server […]
How to declare a qHash overload
Today’s blog post is about something that should be simple and apparently it causes trouble: how to declare a qHash overload for a custom datatype. This is necessary when we want to use custom datatypes as keys in a QHash. From the documentation: A QHash’s key type has additional requirements other than being an assignable […]
Getting rid of “volatile” in (some of) Qt
The upcoming version of the C++ Standard (C++2a) is proposing to deprecate certain usages of the volatile keyword, by adopting the P1152 proposal (Deprecating volatile). Despite the somewhat “flamboyant” title, the actual deprecated parts are very limited and indeed the paper limits the deprecation to somehow language/library corner cases and/or dangerous antipatterns. For instance certain […]