Wayland is a display protocol, a protocol (and accompanying C library) spoken by a graphical application with a display server in order to communicate about both input to the application (keyboard, mouse, ...) and about output from the application -- that is, the rendered window. Wayland was developed to replace the X11 server on the […]
In Qt 5.10, we added support for recursive filtering in QSortFilterProxyModel, which means keeping all parents of items matching the filter. One of the comments in the blog post about that feature was "Sometimes, you do not only want to show parents for a match (so the match is visible), you may (also) want to […]
This video includes the library presentation covering licensing, Qt integration with widgets and QML, code examples, and architecture discussion addressing performance, known issues, and cross-platform support considerations.
This video covers the library presentation including licensing, Qt integration with widgets and QML, code examples, and architecture discussion covering performance, known issues, and cross-platform support considerations.
If you ever need to create a project around a single C++ file (or just a few C++ files) in CMake, as you might for quick test cases, you might find it tedious to write a CMakeLists.txt file by hand every time. To make this easier, I've written a script called cmake-project that you can […]
This video covers the library presentation including licensing, integration with Qt widgets and QML, code examples, and architecture discussion covering performance, known issues, and cross-platform support considerations.
This video covers the library presentation including licensing, integration with Qt widgets and QML, code examples, and architecture discussion covering performance, known issues, and cross-platform support considerations.
In 2019, I optimized QStringList::removeDuplicates() by using std::pmp::unordered_set with a std::pmr::monotonic_buffer_resource, when available. The class that I wrote to encapsulate this optimization has since been re-implemented three times. The latest iteration has recently landed in KDToolBox. If you have code that looks a bit like this: then you should read on. Before my change, the […]
The KDE Community has been developing a variety of Free Software products using Qt for 25 years now. Among them, the Plasma Desktop Environment, creativity tools like Krita and Kdenlive, educational applications like GCompris, groupware suites like Kontact and countless other applications, utilities, and widgets. Qt is famous for its rich set of high-quality, cross-platform […]
Version 2.0.0 of KD Reports has just been released! KD Reports creates all kinds of reports from within Qt applications. These reports are printable and exportable from code and XML descriptions. KD Reports is a developer tool used in source code, but it allows the use of templates that are created by design staff. Reports […]
KDDockWidgets 1.4.0 has been released! KDDockWidgets is a framework for custom-tailored docking systems in Qt. This is a major release with new features and lots of fixes. KDDockWidgets 1.4.0 Overview The big highlights of KDDockWidgets 1.4.0 are the experimental MDI support and the new declarative API for QtQuick: By using MainWindowMDI, you can now have […]
Some time ago, I noticed that a unit test was quite slow, using 100% CPU for a number of seconds at one point in the test. I used perf and KDAB's Hotspot to record and examine where the CPU cycles were spent in that unit test, and I quickly noticed that a lot of time […]
It is our pleasure to introduce a shiny new Maps & Navigation solution for QML developers! This QML plugin is a joint effort between KDAB & Magic Lane (formerly General Magic) to bring the excellent General Magic Maps and Navigation SDK to the QML world. What makes the General Magic QML plugin special? It's easy to use. With […]
(Apologies for the clickbait in the post title! But I'd really like people who are searching for solutions to read this.) Between Qt 5.14 and Qt 5.15, my colleague, Marc Mutz, and I submitted a series of patches to Qt that added "range constructors" to the Qt containers. This brought Qt containers one step closer […]
After many struggles with using git LFS on repositories that need to store big files, I decided to spend some time on checking the status of the built-in partial clone functionality that could possibly let you achieve the same (as of git 2.30). TL;DR: The building blocks are there, but server-side support is spotty and […]
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 […]
For many developers, QNX is the operating system of choice, when it comes to developing on embedded systems. However, the performance limits are exceeded quickly, especially if you're working on low-end hardware. As a result, you'll likely need to perform an investigation to find the bottlenecks that contribute to reaching these limits, in order to […]
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 […]
A long time ago, I wrote a post about creating custom shapes in Qt Quick, via the scene-graph APIs. That post covered defining suitable geometry to draw a part of a circle, known also as a 'sector', efficiently, since such sectors occur commonly in instrument and vehicle interfaces. I started writing the second part, about […]
In this video, we discuss the basics of model/view programming with Qt/QML. How do we expose a set of data (a list, a table, etc.) from the business logic to C++? How much flexibility do we have before the data actually reaches QML?