<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <?xml-stylesheet href="/s/inc/rss.xsl" type="text/xsl"?>
    <rss version="2.0"  xmlns:atom="http://www.w3.org/2005/Atom">
        <channel>
            <title>RSS feed for tag qt5 on Raymii.org</title> 
            <link>https://raymii.org/s/tags/qt5.xml</link> 
            <description>RSS feed for tag qt5 on Raymii.org</description>
            <atom:link href="https://raymii.org/s/tags/qt5.xml" rel="self" type="application/rss+xml" />
    
            <item>
                <title>Leaf Node Monitoring v2025.01 released with Import/Export and Connectivity Check</title> 
                <link>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2025.01_released.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2025.01_released.html</guid>
                <description>I'm pleased to announce the next version of Leaf Node Monitoring, the simple and easy to use open source site and server monitoring tool. This update adds two features users have requested, plus a couple of small but useful fixes. This post goes over everything that is new in this release.</description> 
                <pubDate>Sat, 19 Apr 2025 19:04:00 GMT</pubDate>
                <lastBuildDate>Sat, 19 Apr 2025 19:04:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Leaf Node Monitoring v2024.02 released, autostart, ssl certificate expiry and minimize to tray</title> 
                <link>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2024.02_released.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2024.02_released.html</guid>
                <description>I'm pleased to announce the next version of Leaf Node Monitoring, the simple and easy to use open source site and server monitoring tool. Major new features include minimizing to the tray, automatic startup on Windows and Linux and a new check, SSL Certificate Expiry. This post goes over everything that is new in this release.</description> 
                <pubDate>Fri, 12 Jul 2024 22:30:00 GMT</pubDate>
                <lastBuildDate>Fri, 12 Jul 2024 22:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Leaf Node Monitoring v2024.01 released, better notifications and history</title> 
                <link>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2024.01_released.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Leaf_Node_Monitoring_v2024.01_released.html</guid>
                <description>I'm pleased to announce the next version of Leaf Node Monitoring, the simple and easy to use open source site and server monitoring tool. Major new features include better alerting and history of events. This post goes over everything that is new in this release.</description> 
                <pubDate>Sat, 15 Jun 2024 22:30:00 GMT</pubDate>
                <lastBuildDate>Sat, 15 Jun 2024 22:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt Property Macro (Q_PROPERTY with 95% less code)</title> 
                <link>https://raymii.org/s/blog/Qt_Property_Macro_Q_PROPERTY_with_95_percent_less_code.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Qt_Property_Macro_Q_PROPERTY_with_95_percent_less_code.html</guid>
                <description>Adding [properties to QObject based classes](https://web.archive.org/web/20240529180113/https://doc.qt.io/qt-6/properties.html) is cumbersome. Although [the property system](https://web.archive.org/web/20240529180113/https://doc.qt.io/qt-6/properties.html) and [Signals and Slots](https://web.archive.org/web/20240529180002/https://doc.qt.io/qt-6/signalsandslots.html) are great to use, especially with QML, it takes a lot of boilerplate code to add such properties to a class, at least 15 to 20 lines for each property. I've cobbled up a macro that saves you about 95% of lines when using a `Q_PROPERTY`. (22 lines to 1 line).</description> 
                <pubDate>Wed, 29 May 2024 22:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 29 May 2024 22:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt 5.15 LTS on Windows without a Qt Account</title> 
                <link>https://raymii.org/s/tutorials/Qt_5.15_LTS_on_Windows_without_a_Qt_Account.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qt_5.15_LTS_on_Windows_without_a_Qt_Account.html</guid>
                <description>I recently had to setup a Windows development environment with Qt 5.15. Qt 5.15 is still developed by the Qt company, but only released in binary form for paying customers. The [source code is released after 1 year](/s/blog/Qt_5.15_LTS_Docker_Image_for_Android_with_OpenSSL.html#toc_0).  Via the Online Installer you can only install 5.15.2 and you must login with a Qt account. This guide shows you how to install the most recent Qt 5.15 (as of writing it's 5.15.13) and Qt Creator, **without** a Qt account. We're using `vcpkg` to compile Qt and a specific offline-enabled installer for Qt Creator.</description> 
                <pubDate>Sun, 19 May 2024 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 19 May 2024 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Which Root Certificates should you trust? Find out with CertInfo</title> 
                <link>https://raymii.org/s/software/Which_Root_Certificates_Should_You_Trust_CertInfo.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/software/Which_Root_Certificates_Should_You_Trust_CertInfo.html</guid>
                <description> Which Root Certificates should you trust? Did you know that any certificate authority can issue a certificate for any website? There are protocols in place so that should not happen, but when (not if, when) they get hacked or coerced by their government, they can issue a certificate to intercept secure communication for any website.
I've made an open source program, [CertInfo](https://github.com/raymiiOrg/certinfo) that analyzes your browser history and queries all visited domains for their certificates. It presents a list of used root certificates (meaning, a website you visited was ultimately signed by that root CA) and a list of unused root certificates (meaning, no website in your analyzed history was signed by that root CA). </description> 
                <pubDate>Mon, 01 Jan 2024 09:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 15 Jan 2024 22:03:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>YouLessQt, helps you align the YouLess to an analog electricity meter</title> 
                <link>https://raymii.org/s/software/YouLessQt.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/software/YouLessQt.html</guid>
                <description>The [YouLess](https://youless.nl/home.html) is a device that can help you monitor energy usage. It works on so called smart meters using a P1 port, it can monitor solar panels but it also works with regular old analog meters. I have an old style analog meter but I like gadgets and monitoring / reducing my energy usage just as much as the next guy so I bought one. It has an optical sensor that you paste (with tape) on your meter and that detects a little black bar on the rotor disc and using a rpm factor on your meter it calculates the electricity used.
I has some trouble with the device when I set it up, it turned out to be aligned wrongly. It sometimes missed the black bar, so the numbers were incorrect.
I wrote a little application using Qt and QML to show the raw light sensor values in a line graph to help me align the YouLess correctly. This post tells you more about the application, which of course is open source.</description> 
                <pubDate>Sat, 16 Sep 2023 09:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 16 Sep 2023 09:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>A docker image for Qt 5.15 LTS for Android, including OpenSSL and the KDE patch collection</title> 
                <link>https://raymii.org/s/blog/Qt_5.15_LTS_Docker_Image_for_Android_with_OpenSSL.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Qt_5.15_LTS_Docker_Image_for_Android_with_OpenSSL.html</guid>
                <description>Recently I got an email from Google regarding the API level of [Leaf Node Monitoring](https://leafnode.nl), my open source monitoring app for Windows, Linux and Android. The Play Store version must be updated to target API level 33.
For Windows and Linux I'm building the app automatically in a CI environment but the Android build was still a manual process. Until now, because after a bunch of messing around with Android NDK versions, OpenSSL library paths and Qt compile flags I can automatically build Leaf Node Monitoring in my CI.

I'm using Woodpecker CI and that requires every build step to be executed in a Docker image. There are a few Qt docker images floating around but they are all using the pre-built 5.15.2 version by extracting it from the Qt Online Installer. That version is quite old, 5.15.15 LTS was released [a few days ago for Commercial License Holders](http://web.archive.org/web/20230902132649/https://www.qt.io/blog/commercial-lts-qt-5.15.15-released) on August 31, so after 1 year it will become available as open source.
My docker image builds Qt from source using the `5.15 KDE Qt Patch Collection` branch for Android and it includes OpenSSL. This is as far as I know the most up to date docker image for Qt 5.15, currently at 5.15.10 LTS.</description> 
                <pubDate>Wed, 13 Sep 2023 22:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 13 Sep 2023 22:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Drawing a Circle in Qt QML three different ways</title> 
                <link>https://raymii.org/s/articles/Drawing_a_Circle_in_Qt_QML_three_different_ways.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Drawing_a_Circle_in_Qt_QML_three_different_ways.html</guid>
                <description>Qt has no `Circle` built in to QML as a basic type, as for example the `Rectangle` or the `Button` control. This post shows you how to get a `Circle` in QML, from the most basic method (a `Rectangle` with a `radius` of 180) to more advanced methods, using the `Canvas` JavaScript API (which allows us to draw a partially filled Circle, for a Pie Chart) and a `c++` control based on `QQuickPaintedItem`. I wanted to experiment with the `Canvas` QML control and the `QQuickPaintedItem` C++ interface to get a better understanding of Qt and QML drawing interfaces, this post reflects that journey including showing your grouped QML properties exposed from C++.</description> 
                <pubDate>Wed, 05 Jul 2023 23:59:00 GMT</pubDate>
                <lastBuildDate>Wed, 05 Jul 2023 23:59:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Johnnie 'QObject' Walker, replace a service locator pattern while you're at it</title> 
                <link>https://raymii.org/s/software/Johnnie_QObject_Walker_replace_a_servicelocator_pattern.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/software/Johnnie_QObject_Walker_replace_a_servicelocator_pattern.html</guid>
                <description>I've seen many C++ code bases where there was the concept of a service locator. An global static object that anyone can query to get a class. This is handy with old legacy spiderweb intertwined code that gets everything from everywhere, but not so useful when you're trying to unit test code, it is not visible from the header what dependencies you need. My preference goes to dependency injection, give all the dependencies to the class' constructor and use them that way. Makes it easy to mock and if you have many dependencies, it serves as a starting point to refactor in to a more clearly separated architecture. This article shows a piece of code that uses QObject, the Qt object base class, to replace a servicelocator. All QObjects can have a parent QObject, thus a tree is formed, which you can walk back up and search. This effectively replaces the servicelocator, since you can just request a certain type of QObject.</description> 
                <pubDate>Sat, 14 Jan 2023 04:30:00 GMT</pubDate>
                <lastBuildDate>Sat, 14 Jan 2023 04:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Add moc includes to speed up Qt compilation</title> 
                <link>https://raymii.org/s/blog/Qt_add_moc_includes_to_speed_up_compilation.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Qt_add_moc_includes_to_speed_up_compilation.html</guid>
                <description>The Meta-Object Compiler, `moc`, handles Qt's C++ extensions and it is required for signals and slots and properties in Qt. `moc` reads C++ header files and if the `Q_OBJECT` macro is used, it generates an extra `.cpp` file named `moc_filename.cpp` containing extra (meta-object) code. This post has a bit of background information and a shell script to automatically include `moc_*.cpp` files in your code whenever `Q_OBJECT` is used. If you use `qmake`, this will probably speed up your build and if you use `cmake`, this will probably speed up incremental builds (when `CMAKE_AUTOMOC` is `on`).</description> 
                <pubDate>Mon, 12 Dec 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 12 Dec 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Fade in / fade out in Qt/QML</title> 
                <link>https://raymii.org/s/tutorials/Fade_in_Fade_out_in_QML.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Fade_in_Fade_out_in_QML.html</guid>
                <description>This guide shows you how to add a fade in / fade out effect to a control in QML. There are a lot of built in animations in Qt/QML, but no fade in/fade out. Using a state machine and a `SequentialAnimation`, we can first animate the opacity, then set the visibility, achieving a fade in / fade out effect. Other ways like a `PropertyAnimation` are also available but are less expressive or configurable.</description> 
                <pubDate>Fri, 19 Aug 2022 21:30:00 GMT</pubDate>
                <lastBuildDate>Fri, 19 Aug 2022 21:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt/QML Property bindings break after a JavaScript assignment</title> 
                <link>https://raymii.org/s/articles/Qt_QML_Property_bindings_break_after_javascript_assignment.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Qt_QML_Property_bindings_break_after_javascript_assignment.html</guid>
                <description>Property bindings are one of the most powerful concepts in Qt/QML. Property bindings let you specify relationships between different object properties. When a properties dependencies change in value, the property is automatically updated according to the specified relationship. The QML engine monitors the properties dependencies (that is, the variables in the binding expression). When a change is detected, the QML engine re-evaluates the binding expression and applies the new result to the property.
One little known caveat with property bindings is that they break after a static JavaScript assignment (`property = value`). This post shows you the different behaviors and how to use `Qt.binding()` to assign property bindings via JavaScript.</description> 
                <pubDate>Thu, 19 May 2022 05:30:00 GMT</pubDate>
                <lastBuildDate>Thu, 19 May 2022 05:30:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>HTTP GET requests with Qt and in Qml (async)</title> 
                <link>https://raymii.org/s/tutorials/HTTP_GET_requests_in_Qt_and_Qml_async.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/HTTP_GET_requests_in_Qt_and_Qml_async.html</guid>
                <description>With Qt it's very easy to work with (async) HTTP requests. This guide shows you how to do it with Qt core and in Qml. The two examples print the output of a HTTP GET request on screen after pressing a button. The Qml method uses JavaScript, so that's cheating a bit, the other method uses plain C++ with Qt's libraries for networking (`QNetworkAccessManager`) and signals and slots for the async part.</description> 
                <pubDate>Fri, 29 Apr 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 29 Apr 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt 5.15.3 Open Source released</title> 
                <link>https://raymii.org/s/blog/Qt_5.15.3_OpenSource_released.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/blog/Qt_5.15.3_OpenSource_released.html</guid>
                <description>Qt is a nice C++ framework with a GUI toolkit on top, actually, 2 toolkit, Widgets and Qml. Qt is available under the GPL and LPGL, open source licenses and a closed source license. [Back in 2020](https://lwn.net/Articles/817129/), the Qt company decided to [start a war](https://ev.kde.org/2020/04/06/changes-in-qt-and-the-kde-free-qt-foundation/) against their own users and contributors by withholding the 5.15 code, only releasing them under a closed license, making the offline installers available to paid customers and requiring a Qt account for the online installer. Due to [an agreement](https://www.qt.io/faq/3.2.-why-do-you-have-an-agreement-with-kde-about-your-licensing-what-kde-is-and-whats-the-history-of-qt-and-kde) with the [KDE project](https://kde.org/community/whatiskde/kdefreeqtfoundation/) they are obliged to release the code after one year under an open source license, and that time has come for 5.15.3. For most LTS releases, the Qt company writes a blog post, but this open source release only gets a [mailing list post](https://lists.qt-project.org/pipermail/development/2022-March/042262.html) (One day and 4 blog posts later, [no mention of 5.15.3 on their blog](https://archive.ph/IvMSn)). This short post is intended to give a bit more publicity to that release and to tell you about the KDE Qt 5.15 LTS patch collection. Even if I might not agree with the business practices, the framework is nice to work with.</description> 
                <pubDate>Fri, 04 Mar 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 04 Mar 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Yocto boot2qt for the Raspberry Pi 4, both Qt 5.15 and 6.2</title> 
                <link>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Raspberry_Pi_4_both_Qt_6_and_Qt_5.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Yocto_boot2qt_for_the_Raspberry_Pi_4_both_Qt_6_and_Qt_5.html</guid>
                <description>In this guide we'll build a linux distribution for Raspberry Pi 4, using the Yocto project and the `boot2qt` stack provided by Qt. This `boot2qt` image can be written to an SD card and when booted up, the Raspberry Pi runs a software stack that integrates nicely with Qt Creator (the Qt IDE), for example, one click deployment to the device. You can run your own Qt application on the Pi, full screen, it will boot right into it.
This guide covers both Qt 5.15 and Qt 6.2. The 5.15 build process is a bit convoluted due to a few upstream issues. The guide also covers changing the default startup app to your own app and Qt Creator integration.</description> 
                <pubDate>Mon, 21 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 21 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Embed the source code directly in your Qt app with qmake and qrc, for GPL compliance</title> 
                <link>https://raymii.org/s/articles/Embed_the_source_code_directly_in_your_Qt_app.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Embed_the_source_code_directly_in_your_Qt_app.html</guid>
                <description>In my earlier [post on selling GPL software](/s/blog/Selling_GPL_Software_part_1_lots_of_hurdles.html) I outlined a few points that make it hard to sell GPL software. One of them is the availability of the source code. You could put it online but then everyone has access without paying. Other options like putting it behind a login or sending a link after purchase require extra systems and saving more user information, lots of extra hassle for me and the users.
One of my ideas for 'solving' this issue is by shipping the actual source code directly inside the application. This article shows you how to do that, by creating an archive of the current source code on every build with `qmake` and embedding that inside the application using `qrc`, including a button to save the archive locally to disk. It works on the desktop as well as Android, including the required permissions.</description> 
                <pubDate>Sat, 12 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 12 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Log all Item properties and functions in Qml</title> 
                <link>https://raymii.org/s/snippets/Log_all_Item_properties_and_functions_in_Qml.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/snippets/Log_all_Item_properties_and_functions_in_Qml.html</guid>
                <description>This small snippet of Javascript logs all properties and functions of a Qml Item. This is useful when you're knees-deep in a dynamic control that has a model and you're wondering why your code does not work. Probably because you're not using the correct property name. Or at least, that is something I often have. Logging all properties or functions helps to figure out that issue.</description> 
                <pubDate>Wed, 09 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 09 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Loop over all Repeater items or Delegate's in Qml</title> 
                <link>https://raymii.org/s/snippets/Loop_over_all_Repeater_items_or_Delegates_in_Qml.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/snippets/Loop_over_all_Repeater_items_or_Delegates_in_Qml.html</guid>
                <description>This small snippet shows how to loop over all Repeater items in Qml and also over all Delegate items in Qml. There are sublte differences between the two.
I'm using this to update visual all items in a control, before syncing state to a networked backend, and if the backend actions fails, I undo the visual state change. The network backend could be slow, by keeping state locally and syncing in the background, the user can continue working.</description> 
                <pubDate>Wed, 09 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 09 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>QML Touch Area visualization with QML_VISUAL_TOUCH_DEBUGGING</title> 
                <link>https://raymii.org/s/tutorials/Qml_Touch_Area_Visualization_QML_VISUAL_TOUCH_DEBUGGING.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qml_Touch_Area_Visualization_QML_VISUAL_TOUCH_DEBUGGING.html</guid>
                <description>This guide shows you how to enable a red visual square around your `Mouseareas` and `MultiPointTouchArea` controls. It visualizes where you can click/touch and also shows any overlapping touch area's. It's helpful on full screen device interfaces like a coffee-machine or other HMI.
The environment flag `QML_VISUAL_TOUCH_DEBUGGING` needs to be set, but this is not documented on the Qt Docs site, only on a cheat sheet from 2016 by ISC. If you google for the environment flag, the only pages you get are the Qt source code and that cheat sheet. I've found this flag to be very useful when debugging touch issues, like overlapping touch or when a touch area is too small to use.
One of my co-workers found it when we had touch issues and since there is a lack of documentation, perfect for a small guide.</description> 
                <pubDate>Mon, 07 Feb 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 07 Feb 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>QML Drag and Drop including reordering the C++ model</title> 
                <link>https://raymii.org/s/tutorials/Qml_Drag_and_Drop_example_including_reordering_the_Cpp_Model.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/tutorials/Qml_Drag_and_Drop_example_including_reordering_the_Cpp_Model.html</guid>
                <description>This guide shows you how to implement drag and drop in Qml including how to reorder the backing C++ (`QAbstractListModel` derived) data model.
Most QML Drag and Drop examples you find online, including the Qt official example, use a `ListModel` in the same Qml file which has the data, but no example I found actually reordered a C++ model.
This example has a simple `MVVM (model-view-viewmodel)` C++ structure and a QML file with a drag and drop grid. The dragable example items come from the C++ model, which is derived from `QAbstractListModel`.</description> 
                <pubDate>Fri, 21 Jan 2022 00:00:00 GMT</pubDate>
                <lastBuildDate>Fri, 21 Jan 2022 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Responsive QML Layout (with scrollbars)</title> 
                <link>https://raymii.org/s/articles/Responsive_Qml_layout_with_scrollbars.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Responsive_Qml_layout_with_scrollbars.html</guid>
                <description>In this article I'll show you how to make a responsive layout in Qt / QML that automatically adjusts the amount of columns and rows based on the window dimensions, including scrollbars for when the content does not fit inside the window. This also works if you have a portrait and landscape orientation of your application, since the screen or window dimensions will be different across those two builds. I also explain how the dynamic resizing works with an explanation of property bindings in QML and as a bonus this works on mobile (Android/iOS) as well.</description> 
                <pubDate>Tue, 05 Oct 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Tue, 05 Oct 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Qt/QML: Expose C++ classes to QML and why setContextProperty is not the best idea</title> 
                <link>https://raymii.org/s/articles/Qt_QML_Integrate_Cpp_with_QML_and_why_ContextProperties_are_bad.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Qt_QML_Integrate_Cpp_with_QML_and_why_ContextProperties_are_bad.html</guid>
                <description>In this article I'm going to discuss the different ways to expose a C++ class to QML. QML is a markup language (part of the QT framework) like HTML/CSS, with inline JavaScript that can interact with the C++ code of your (QT) application. There are multiple ways to expose a C++ class to QML, each with their own benefits and quirks. This guide will cover three integration methods, `qmlRegisterSingletonType&lt;&gt;`, `rootContext-&gt;setContextProperty()` and `qmlRegisterType&lt;&gt;`. We'll end off with a simple benchmark showing the difference in startup times between the first two. </description> 
                <pubDate>Sun, 03 Oct 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Sun, 03 Oct 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Expose any Qt5 program via VNC</title> 
                <link>https://raymii.org/s/articles/Expose_any_QT_program_via_VNC.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Expose_any_QT_program_via_VNC.html</guid>
                <description>A few months ago I wrote about [Microsoft Teams running on a coffee machine. That was a fun work experiment where I got a VNC client running on the Linux-based coffee machines that we produce at work. In the comments on hackernews Jean-Micha&amp;euml;l Celerier pointed me to the reverse, a way to expose any Qt application over VNC. This article shows you how I use this feature to work on our Qt 5 based coffee machine frontend as well as how you can use this on your machine, for example, to expose Dolphin, the KDE file manager, over VNC.</description> 
                <pubDate>Mon, 20 Sep 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Mon, 20 Sep 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Rectangle{} debugging in QML, just like printf(), but for QT</title> 
                <link>https://raymii.org/s/articles/Rectangle_debugging_in_QML_just_like_printf.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Rectangle_debugging_in_QML_just_like_printf.html</guid>
                <description>Recently I've been using a debugging technique in QT/QML that I've decided to name `Rectangle{}` debugging, in the same vein as `printf()` debugging. QML is a markup language (part of the QT framework) like HTML/CSS, with inline Javascript that can interact with the C++ code of your (QT) application. QML has the concept of `anchors` for relative positioning of elements. Overall, `anchors` work quite well, but can get complex when inheretance and complicated layouts come into play. The `Rectangle{}` style of debugging places a semi-transparent rectangle with a border around your element so you can visualize the positioning and see what effect your changes have. This article shows an example where I recently applied this style of debugging at work in our coffee machine user interface, including some tips to do actual `printf()` style debugging (but with `Console.log`).</description> 
                <pubDate>Wed, 08 Sep 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Wed, 08 Sep 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
            <item>
                <title>Disable (debug) logging in QT and QML</title> 
                <link>https://raymii.org/s/articles/Disable_logging_in_QT_and_QML.html?utm_medium=rss&amp;utm_source=raymii&amp;utm_campaign=tagrss</link> 
                <guid>https://raymii.org/s/articles/Disable_logging_in_QT_and_QML.html</guid>
                <description>In QT you can use a few functions from the `qDebug.h` header like `qDebug()` and `qWarning()` to log information to the console. In QML you can use the likes of `console.log()`, `console.error()`. It's also very easy to implement your own logger (eg. `SyslogMessageHandler`) if you want something different, like logging to syslog and the console.
In this post I'll show you how to disable both forms of logging in a release build, qml and qt have different ways to manage their output.</description> 
                <pubDate>Sat, 27 Feb 2021 00:00:00 GMT</pubDate>
                <lastBuildDate>Sat, 27 Feb 2021 00:00:00 GMT</lastBuildDate>
            </item>
    
        </channel>
    </rss>
    
    