LLMCore 0.1.0 — A Qt/C++ library for integrating LLM into desktop applications
I was developing QodeAssist (an AI-powered programming assistant for Qt Creator), and along the way, I realized something: integrating LLM into C++/Qt applications is much more difficult than it should be. And this obstacle matters—the easier it is to integrate LLM, the more Qt developers will experiment with it. And some of these experiments can truly change the way users interact with applications. Not just desktop applications, but any Qt applications!
Therefore, I separated the LLM layer from QodeAssist into a separate library: LLMCore.
**What it does:**
* Streaming API (Anthropic, OpenAI Compatible (Chat and Responses API), Google AI, Ollama, llama.cpp)
* Tool calling with async execution — define a tool once, it works with every provider
* Thinking/reasoning (Claude, Gemini, etc.)
* Callbacks or signals/slots — your pick
* Full payload control when you need provider-specific tweaks
link: [https://github.com/Palm1r/llmcore](https://github.com/Palm1r/llmcore)
https://redd.it/1ruvyxz
@qt_reddit
I was developing QodeAssist (an AI-powered programming assistant for Qt Creator), and along the way, I realized something: integrating LLM into C++/Qt applications is much more difficult than it should be. And this obstacle matters—the easier it is to integrate LLM, the more Qt developers will experiment with it. And some of these experiments can truly change the way users interact with applications. Not just desktop applications, but any Qt applications!
Therefore, I separated the LLM layer from QodeAssist into a separate library: LLMCore.
**What it does:**
* Streaming API (Anthropic, OpenAI Compatible (Chat and Responses API), Google AI, Ollama, llama.cpp)
* Tool calling with async execution — define a tool once, it works with every provider
* Thinking/reasoning (Claude, Gemini, etc.)
* Callbacks or signals/slots — your pick
* Full payload control when you need provider-specific tweaks
link: [https://github.com/Palm1r/llmcore](https://github.com/Palm1r/llmcore)
https://redd.it/1ruvyxz
@qt_reddit
GitHub
GitHub - Palm1r/llmcore: Qt C++ library for working with AI/LLM Providers
Qt C++ library for working with AI/LLM Providers. Contribute to Palm1r/llmcore development by creating an account on GitHub.
iPhotron v4.3.1 released: Linux alpha, native RAW support, improved cropping
# What My Project Does
iPhotron helps users organize and browse local photo libraries while keeping files in normal folders. It supports features like GPU-accelerated browsing, HEIC/MOV Live Photos, map view, and non-destructive management.
What’s new in v4.3.1:
Linux version enters alpha testing
Native RAW image support
Crop tool now supports aspect ratio constraints
Fullscreen fixes and other bug fixes
GitHub: OliverZhaohaibin/iPhotron-LocalPhotoAlbumManager: A macOS Photos–style photo manager for Windows — folder-native, non-destructive, with HEIC/MOV Live Photo, map view, and GPU-accelerated browsing.
# Target Audience
This project is for photographers and users who want a desktop-first, local photo workflow instead of a cloud-based one. It is meant as a real usable application, not just a toy project, although the Linux version is still in alpha and needs testing.
# Comparison
Compared with other photo managers, iPhotron focuses on combining a Mac Photos-like browsing experience with folder-native file management and a non-destructive workflow. Many alternatives are either more professional/complex, or they depend on closed library structures. iPhotron aims to be a simpler local-first option while still supporting modern formats like RAW, HEIC, and Live Photos.
I’d especially love feedback from Linux users and photographers working with RAW workflows. If you try it, I’d really appreciate hearing what works, what doesn’t, and what you’d like to see next.
https://redd.it/1ruixxk
@qt_reddit
# What My Project Does
iPhotron helps users organize and browse local photo libraries while keeping files in normal folders. It supports features like GPU-accelerated browsing, HEIC/MOV Live Photos, map view, and non-destructive management.
What’s new in v4.3.1:
Linux version enters alpha testing
Native RAW image support
Crop tool now supports aspect ratio constraints
Fullscreen fixes and other bug fixes
GitHub: OliverZhaohaibin/iPhotron-LocalPhotoAlbumManager: A macOS Photos–style photo manager for Windows — folder-native, non-destructive, with HEIC/MOV Live Photo, map view, and GPU-accelerated browsing.
# Target Audience
This project is for photographers and users who want a desktop-first, local photo workflow instead of a cloud-based one. It is meant as a real usable application, not just a toy project, although the Linux version is still in alpha and needs testing.
# Comparison
Compared with other photo managers, iPhotron focuses on combining a Mac Photos-like browsing experience with folder-native file management and a non-destructive workflow. Many alternatives are either more professional/complex, or they depend on closed library structures. iPhotron aims to be a simpler local-first option while still supporting modern formats like RAW, HEIC, and Live Photos.
I’d especially love feedback from Linux users and photographers working with RAW workflows. If you try it, I’d really appreciate hearing what works, what doesn’t, and what you’d like to see next.
https://redd.it/1ruixxk
@qt_reddit
GitHub
GitHub - OliverZhaohaibin/iPhotron-LocalPhotoAlbumManager: A macOS Photos–style photo manager for Windows — folder-native, non…
A macOS Photos–style photo manager for Windows — folder-native, non-destructive, with HEIC/MOV Live Photo, map view, and GPU-accelerated browsing. - OliverZhaohaibin/iPhotron-LocalPhotoAlbumManager
This media is not supported in your browser
VIEW IN TELEGRAM
Working on different animations for buttons in my Qt application. If You guys know some cool ideas for animations I would appreciate if You share them
https://redd.it/1rtprh4
@qt_reddit
https://redd.it/1rtprh4
@qt_reddit
QT/QML/C++/ESP32I've made a Remote 3D Control System for a Robotic Arm
3D Command Tester
ᵈᵒⁿ'ᵗ ʲᵘᵈᵍᵉ ᵐᵉ ᶠᵒʳ ᵗʰᵉ ᵈᵉˢⁱᵍⁿ ᵒᶠ ᵐʸ ᵃʳᵐ, ⁱ ᵐᵃᵈᵉ ⁱᵗ ⁱⁿ ⁵ ᵐⁱⁿᵘᵗᵉˢ ⁱⁿ ᵇˡᵉⁿᵈᵉʳ.
This is my first post here (and first project) <3, I made this to learn a lot of topics, principally to learn how is the process of connect 3D, Hardware and Software. (in this case via WiFi).
Workflow: You send commands from the client like "SET M 45" and the ESP32 server should make something with it, in this case: move a servo located in the MID part of the bone hierarchy 45 degrees. The 3D UI is just for testing commands BUT can work as a Digital Twin if u have the components.
\- Project Link
Stack:
3D Command Tester:
\- Cmake
\- Qt Quick 3D
\- Cpp
Client-PC:
\- Meson (I hate Cmake)
\- Conan
\- Boost.Asio - SPDLog
\- CPP
Server-ESP32:
\- ESP32 using WiFi.h
Feel free to ask anything :D
Also I'm a 3D Artist <3: 3D Art from this guy
https://redd.it/1s584db
@qt_reddit
3D Command Tester
ᵈᵒⁿ'ᵗ ʲᵘᵈᵍᵉ ᵐᵉ ᶠᵒʳ ᵗʰᵉ ᵈᵉˢⁱᵍⁿ ᵒᶠ ᵐʸ ᵃʳᵐ, ⁱ ᵐᵃᵈᵉ ⁱᵗ ⁱⁿ ⁵ ᵐⁱⁿᵘᵗᵉˢ ⁱⁿ ᵇˡᵉⁿᵈᵉʳ.
This is my first post here (and first project) <3, I made this to learn a lot of topics, principally to learn how is the process of connect 3D, Hardware and Software. (in this case via WiFi).
Workflow: You send commands from the client like "SET M 45" and the ESP32 server should make something with it, in this case: move a servo located in the MID part of the bone hierarchy 45 degrees. The 3D UI is just for testing commands BUT can work as a Digital Twin if u have the components.
\- Project Link
Stack:
3D Command Tester:
\- Cmake
\- Qt Quick 3D
\- Cpp
Client-PC:
\- Meson (I hate Cmake)
\- Conan
\- Boost.Asio - SPDLog
\- CPP
Server-ESP32:
\- ESP32 using WiFi.h
Feel free to ask anything :D
Also I'm a 3D Artist <3: 3D Art from this guy
https://redd.it/1s584db
@qt_reddit
Best place to learn Qt ?
I’ve been coding for about a year now, primarily focused on C++ and solving 220+ DSA problems. Recently, I decided to transition from competitive programming to application development using Qt, as C++ is my strongest language. However, I’m finding it a bit challenging to get comfortable with frameworks. I realized that learning theory without implementation isn't very effective, so I want to dive deeper into how Qt's libraries and properties actually work under the hood.
What are the best resources to master the core architecture of Qt? Also, am I on the right track by focusing on the core logic while exploring side interests like reverse engineering, cybersecurity (Nmap, Wireshark), and databases? I’d love to hear your thoughts
https://redd.it/1s4j83q
@qt_reddit
I’ve been coding for about a year now, primarily focused on C++ and solving 220+ DSA problems. Recently, I decided to transition from competitive programming to application development using Qt, as C++ is my strongest language. However, I’m finding it a bit challenging to get comfortable with frameworks. I realized that learning theory without implementation isn't very effective, so I want to dive deeper into how Qt's libraries and properties actually work under the hood.
What are the best resources to master the core architecture of Qt? Also, am I on the right track by focusing on the core logic while exploring side interests like reverse engineering, cybersecurity (Nmap, Wireshark), and databases? I’d love to hear your thoughts
https://redd.it/1s4j83q
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
How to augment Qt Quick Controls with the KDE Kirigami library
https://www.youtube.com/watch?v=bVmjBztkS-8
https://redd.it/1s3ihxn
@qt_reddit
https://www.youtube.com/watch?v=bVmjBztkS-8
https://redd.it/1s3ihxn
@qt_reddit
YouTube
KDE Kirigami development in depth tutorial - March 2026 - 4b81e0b0
How to program using the KDE Kirigami library that is extending Qt Framework's Qt Quick, QML, Qt Quick Controls.
Is Qt/C++ a Good Choice for this?
I've recently retired after 40+ years as an electrical engineer and want to work on some home automation stuff around the house. Up until now I've had commercial home automation gadgets, but several of them have been sunsetted by their vendors and no longer work. I want to develop my own hardware to replace it so I have control over it without worrying about vendors stopping support.
For controlling and monitoring the hardware, I was planning to write apps using C#/WPF on Windows, but I've gotten tired of the spyware called Windows 11 and have been replacing it with Linux on all of my PCs. In getting away from MS products, I've been looking for something other than C#/WPF, and ran across Qt. Would this be a good choice to write native Linux GUI apps that interface to home automation hardware using serial, CAN, and WiFi? I'm not talking about anything really sophisticated, just something like a simple app to turn lights on and off and to set schedules, and simple database access to save and retrieve weather data from my weather station.
I have experience with C++, but that was 20 years ago.
https://redd.it/1s1qm83
@qt_reddit
I've recently retired after 40+ years as an electrical engineer and want to work on some home automation stuff around the house. Up until now I've had commercial home automation gadgets, but several of them have been sunsetted by their vendors and no longer work. I want to develop my own hardware to replace it so I have control over it without worrying about vendors stopping support.
For controlling and monitoring the hardware, I was planning to write apps using C#/WPF on Windows, but I've gotten tired of the spyware called Windows 11 and have been replacing it with Linux on all of my PCs. In getting away from MS products, I've been looking for something other than C#/WPF, and ran across Qt. Would this be a good choice to write native Linux GUI apps that interface to home automation hardware using serial, CAN, and WiFi? I'm not talking about anything really sophisticated, just something like a simple app to turn lights on and off and to set schedules, and simple database access to save and retrieve weather data from my weather station.
I have experience with C++, but that was 20 years ago.
https://redd.it/1s1qm83
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
Please I really need help from any of you to use Web engine widget to create my program.
I'm using qt 6.10.2. I know realize 6.11 version recently and I don't have a problem using that new version. Cmake says it can't find the widget. I use windows 11. Send me messages to help me
https://redd.it/1s24z72
@qt_reddit
I'm using qt 6.10.2. I know realize 6.11 version recently and I don't have a problem using that new version. Cmake says it can't find the widget. I use windows 11. Send me messages to help me
https://redd.it/1s24z72
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
Qt Creator Examples Disconnect
I installed the Qt Creator app on my Fedora system using dnf, but it didn't include the examples. I installed the examples separately, but Qt Creator doesn't show them on the Examples tab of the Welcome page.
Is there any way to point Qt Creator at the directory the examples are located in so it will display the examples in the Examples tab?
https://redd.it/1s1s0py
@qt_reddit
I installed the Qt Creator app on my Fedora system using dnf, but it didn't include the examples. I installed the examples separately, but Qt Creator doesn't show them on the Examples tab of the Welcome page.
Is there any way to point Qt Creator at the directory the examples are located in so it will display the examples in the Examples tab?
https://redd.it/1s1s0py
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
QWebEngineView and openstreetmap
Hi everyone, do you have any experience integrating openstreetmap into a qt widgets application using leaflet js?
What are your results? Is it good performance-wise?
https://redd.it/1s1r0hg
@qt_reddit
Hi everyone, do you have any experience integrating openstreetmap into a qt widgets application using leaflet js?
What are your results? Is it good performance-wise?
https://redd.it/1s1r0hg
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
I built Caypper — a Qt/C++ wallpaper manager with Vim-style navigation and multi-DE support
https://www.reddit.com/gallery/1rztb9g
https://redd.it/1s0i2ih
@qt_reddit
https://www.reddit.com/gallery/1rztb9g
https://redd.it/1s0i2ih
@qt_reddit
Reddit
From the LinuxPorn community on Reddit: I built Caypper — a Qt/C++ wallpaper manager with Vim-style navigation and multi-DE support
Explore this post and more from the LinuxPorn community
Why does the last item get white text and how can I fix it?
https://preview.redd.it/pspe9jhxc1sg1.png?width=243&format=png&auto=webp&s=9d6ada40fdde95e1d09555e91a121e5871afd996
import QtQuick
import QtQuick.Controls
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Column{
anchors.fill: parent
spacing: 5
padding: 5
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
}
}
https://redd.it/1s74mci
@qt_reddit
https://preview.redd.it/pspe9jhxc1sg1.png?width=243&format=png&auto=webp&s=9d6ada40fdde95e1d09555e91a121e5871afd996
import QtQuick
import QtQuick.Controls
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Column{
anchors.fill: parent
spacing: 5
padding: 5
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
Button {
width: 100
height: 40
text: "Click"
}
}
}
https://redd.it/1s74mci
@qt_reddit
Trying to resize using handles but the movement gets Parabolic
I'm making a code to transform a graphic item using visual handles. I want that each handle resizes anchoring in the opposite corner. To to that, I need to correct the position(t.translate(aX, aY);).
But this correction moves the object like a parabola: even if I move it uniformly, it goes faster that it should, then it slows and then it begins to go reverse and faster. The point in the delta numbers where it almost doesnt moves has, aparently, no correlation with the last mouse position (the place where the drag begins).
Does anyone have a clue why does this happens? This is my code:
void ibo::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (currentHandle == None)
{
QGraphicsPixmapItem::mouseMoveEvent(event);
return;
}
QPointF delta = event->scenePos() - lastMousePos;
double newWidth;
double newHeight;
double aX;
double aY;
if (currentHandle == BottomRight)
{
newWidth = oWidth + delta.x();
newHeight = oHeight + delta.y();
aX = 0;
aY = 0;
}
else if (currentHandle == TopLeft)
{
newWidth = oWidth - delta.x();
newHeight = oHeight - delta.y();
aX = delta.x();
aY = delta.y();
}
else if (currentHandle == TopRight)
{
newWidth = oWidth + delta.x();
newHeight = oHeight - delta.y();
aX = 0;
aY = delta.y();
}
else if (currentHandle == BottomLeft)
{
newWidth = oWidth - delta.x();
newHeight = oHeight + delta.y();
aX = delta.x();
aY = 0;
}
newWidth = std::max(newWidth, 10.0);
newHeight = std::max(newHeight, 10.0);
prepareGeometryChange();
QTransform t = t0;
t.scale(newWidth / oWidth, newHeight / oHeight);
t.translate(aX, aY);
setTransform(t);
qDebug() << delta.x() << newWidth;
}
https://redd.it/1s7zbhe
@qt_reddit
I'm making a code to transform a graphic item using visual handles. I want that each handle resizes anchoring in the opposite corner. To to that, I need to correct the position(t.translate(aX, aY);).
But this correction moves the object like a parabola: even if I move it uniformly, it goes faster that it should, then it slows and then it begins to go reverse and faster. The point in the delta numbers where it almost doesnt moves has, aparently, no correlation with the last mouse position (the place where the drag begins).
Does anyone have a clue why does this happens? This is my code:
void ibo::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (currentHandle == None)
{
QGraphicsPixmapItem::mouseMoveEvent(event);
return;
}
QPointF delta = event->scenePos() - lastMousePos;
double newWidth;
double newHeight;
double aX;
double aY;
if (currentHandle == BottomRight)
{
newWidth = oWidth + delta.x();
newHeight = oHeight + delta.y();
aX = 0;
aY = 0;
}
else if (currentHandle == TopLeft)
{
newWidth = oWidth - delta.x();
newHeight = oHeight - delta.y();
aX = delta.x();
aY = delta.y();
}
else if (currentHandle == TopRight)
{
newWidth = oWidth + delta.x();
newHeight = oHeight - delta.y();
aX = 0;
aY = delta.y();
}
else if (currentHandle == BottomLeft)
{
newWidth = oWidth - delta.x();
newHeight = oHeight + delta.y();
aX = delta.x();
aY = 0;
}
newWidth = std::max(newWidth, 10.0);
newHeight = std::max(newHeight, 10.0);
prepareGeometryChange();
QTransform t = t0;
t.scale(newWidth / oWidth, newHeight / oHeight);
t.translate(aX, aY);
setTransform(t);
qDebug() << delta.x() << newWidth;
}
https://redd.it/1s7zbhe
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
CodePointer version 0.1.3 - new C++ IDE/editor
April version brings improvements to the git commit dialog (better editor experience, amend, push), fix the terminal font bugs (which means I should start redirecting output through this control next versions). Code format has been updated (you can reformat an editor without saving, and can also define custom formatters). F4 (find matching header/implementation) should be more reliable.
[https://gitlab.com/codepointer/codepointer/-/releases/v0.1.3](https://gitlab.com/codepointer/codepointer/-/releases/v0.1.3)
https://github.com/codepointerapp/codepointer/releases/tag/v0.1.3
https://redd.it/1s9dwxs
@qt_reddit
April version brings improvements to the git commit dialog (better editor experience, amend, push), fix the terminal font bugs (which means I should start redirecting output through this control next versions). Code format has been updated (you can reformat an editor without saving, and can also define custom formatters). F4 (find matching header/implementation) should be more reliable.
[https://gitlab.com/codepointer/codepointer/-/releases/v0.1.3](https://gitlab.com/codepointer/codepointer/-/releases/v0.1.3)
https://github.com/codepointerapp/codepointer/releases/tag/v0.1.3
https://redd.it/1s9dwxs
@qt_reddit
GitLab
April 2026 - release v0.1.3 - sssiiixxxx seeevveeeennn!!111 · codepointer / codepointer · GitLab
Full Changelog: https://github.com/codepointerapp/codepointer/compare/v0.1.2...v0.1.3 April 2026 - release v0.1.3 - sssiiixxxx seeevveeeennn!!111
AppImage for Enterprise Applications - Yay or Nah?
I work in a enterprise VPN company. We are planning to launch on Linux.
We have 5 services (non-QT) and we have already created an headless application with
I've experimented with
I learnt that
My question is:
1. Is AppImage the right choice for enterprise app deployment?
2. What are the cons of AppImage and can we use gdb with AppImage deployments?
3. Please share your experience and opinions on AppImage
4. How do you deploy your apps and what is your preferred format? What made you prefer that?
My options are looking like:
\- With
/opt/MyVpn/
|-----/bin/
| |---- service1
| |---- service{2...5}
| |---- UI.AppImage
|-----/assets/
|-----/license/
\- Without
/opt/MyVpn/
|-----/bin/
| |---- service1
| |---- service{2...5}
| |---- UI
|-----/libs/
| |---- libQt...
| |---- QML/...
|-----/assets/
|-----/license/
Thanks for sharing your experience!
https://redd.it/1s9bs45
@qt_reddit
I work in a enterprise VPN company. We are planning to launch on Linux.
We have 5 services (non-QT) and we have already created an headless application with
.deb and .rpm packages. Now we are developing our UI and I want the community's experience and opinions for right deployment method.I've experimented with
linuxdeploy tool for creating AppImage. It was good and super-portable; but debugability is my concern.I learnt that
linuxdeploy can also be used to gather the dependencies (libs and QML files). And we can package into any desired format afterwards.My question is:
1. Is AppImage the right choice for enterprise app deployment?
2. What are the cons of AppImage and can we use gdb with AppImage deployments?
3. Please share your experience and opinions on AppImage
4. How do you deploy your apps and what is your preferred format? What made you prefer that?
My options are looking like:
\- With
AppImage/opt/MyVpn/
|-----/bin/
| |---- service1
| |---- service{2...5}
| |---- UI.AppImage
|-----/assets/
|-----/license/
\- Without
AppImage (something similar of that sort)/opt/MyVpn/
|-----/bin/
| |---- service1
| |---- service{2...5}
| |---- UI
|-----/libs/
| |---- libQt...
| |---- QML/...
|-----/assets/
|-----/license/
Thanks for sharing your experience!
https://redd.it/1s9bs45
@qt_reddit
Reddit
From the QtFramework community on Reddit
Explore this post and more from the QtFramework community
My (self-inflected) painful journey from Qt 5 to Qt 6
As a follow-up to [my other post](https://www.reddit.com/r/linux/comments/1rwc0yc/an_update_on_starting_a_dental_practice_using/), a few people asked about my transition from Qt 5 to Qt 6 and why I made some of the decisions that I did.
So when I first wrote my software, it was made using Qt 5, qmake, QML, Qt Quick Controls, and Qt Quick Materials. Why QML? Because I wanted to make a good “touch friendly” UX since [I was going to use touchscreens clinically](https://youtu.be/lyi7C_23QEA?si=enprJ1wA95iyoye_). Because I didn’t want to make two different code bases for the desktop version (QWidgets) and for touch, I decided to use QML for both desktop and touch. There were some issues in terms of mouse selection (Qt Quick Materials text highlighting works mobile like by default); but overall it was fine.
Now fast forward to 2025. There are a few things that are happening at the same time:
First is the fact that KDE / Plasma / Kwin announced they will be completely getting rid of X11 session support soon. You can see my [other writeup]((https://www.reddit.com/r/linux/comments/1rwc0yc/an_update_on_starting_a_dental_practice_using/)) on why that was an issue here.
Second “issue” was the end of life of Windows 10. So many doctors were forced to upgrade new hardware; and afterwards, most of them hated Windows 11 after the “upgrade”. They hated it so much many of them Googled “Linux Dental EHR” and so my software come up their radar. I have gotten more phone calls and emails about Clear.Dental in the last 5 months than I did in the last 5 years. So why is this an issue? Well, many of them would contact me to see how they can “try” it. One problem: I made sure everything works well on Linux but never bothered to work on the macOS or Windows port. So I tell them to try it on Linux. Of course, these doctors don’t know how to make a Linux Live USB so they ask their IT manager. Turns out, they have no clue how to flash a USB stick either! So I realized I need to make more ports for my software.
The third issue is that more people got interested in my software outside the US. Many doctors outside the US know English, but their front desk / assistants may not. Therefore, I had to add proper i18n support. Another side issue was being able to handle both the American Universal Dental Charting System and the international FDI system.
Fourth issue: Qt 5.15 (the last Qt 5 release) already got EoL. Yes, technically Kubuntu 24.04 LTS can last me another year. But sooner or later I have to make to Qt 6 and Wayland. There is no going around this. I am sure some random distro will still have Qt 5.15; but nobody will be maintaining the actual Qt 5.15 code base at this point.
So I made this decision: I need to make a number of changes all at once rather then piecemeal:
* Port the Qt 5 code to Qt 6
* Move from qmake to cmake (because Qt 6 made shaders very difficult to manage if you are using qmake and I have a fair amount of shaders for viewing radiographs and using some 3d models)
* Move from Qt Material to Kirigami (will explain why soon)
* Remove my X11 “hacks” and make it work on Wayland properly
* Make it work as an KDE Application
Why Kirigami? Because it handles desktop and touch UX much better than Qt Quick Controls Materials. Kirigami on a desktop looks like an actual desktop app and will re-arrange itself properly to work in touchscreens.
And as to why I wanted to make this a KDE Project: I want to use their Craft building system to help out in the different ports / platforms. That way, once I port it to macOS or Android, keeping up the builds would be much easier.
Because the API and framework would be too different, I couldn’t just make changes to the code directly without breaking the build. So I kept the [Qt5 version at its current location (marked it as my 1.0)](https://gitlab.com/cleardental/cleardental) and then made [a brand new repo for the Qt6 version](https://invent.kde.org/desiotaku/cleardental); and then copied over the source files as I needed them
As a follow-up to [my other post](https://www.reddit.com/r/linux/comments/1rwc0yc/an_update_on_starting_a_dental_practice_using/), a few people asked about my transition from Qt 5 to Qt 6 and why I made some of the decisions that I did.
So when I first wrote my software, it was made using Qt 5, qmake, QML, Qt Quick Controls, and Qt Quick Materials. Why QML? Because I wanted to make a good “touch friendly” UX since [I was going to use touchscreens clinically](https://youtu.be/lyi7C_23QEA?si=enprJ1wA95iyoye_). Because I didn’t want to make two different code bases for the desktop version (QWidgets) and for touch, I decided to use QML for both desktop and touch. There were some issues in terms of mouse selection (Qt Quick Materials text highlighting works mobile like by default); but overall it was fine.
Now fast forward to 2025. There are a few things that are happening at the same time:
First is the fact that KDE / Plasma / Kwin announced they will be completely getting rid of X11 session support soon. You can see my [other writeup]((https://www.reddit.com/r/linux/comments/1rwc0yc/an_update_on_starting_a_dental_practice_using/)) on why that was an issue here.
Second “issue” was the end of life of Windows 10. So many doctors were forced to upgrade new hardware; and afterwards, most of them hated Windows 11 after the “upgrade”. They hated it so much many of them Googled “Linux Dental EHR” and so my software come up their radar. I have gotten more phone calls and emails about Clear.Dental in the last 5 months than I did in the last 5 years. So why is this an issue? Well, many of them would contact me to see how they can “try” it. One problem: I made sure everything works well on Linux but never bothered to work on the macOS or Windows port. So I tell them to try it on Linux. Of course, these doctors don’t know how to make a Linux Live USB so they ask their IT manager. Turns out, they have no clue how to flash a USB stick either! So I realized I need to make more ports for my software.
The third issue is that more people got interested in my software outside the US. Many doctors outside the US know English, but their front desk / assistants may not. Therefore, I had to add proper i18n support. Another side issue was being able to handle both the American Universal Dental Charting System and the international FDI system.
Fourth issue: Qt 5.15 (the last Qt 5 release) already got EoL. Yes, technically Kubuntu 24.04 LTS can last me another year. But sooner or later I have to make to Qt 6 and Wayland. There is no going around this. I am sure some random distro will still have Qt 5.15; but nobody will be maintaining the actual Qt 5.15 code base at this point.
So I made this decision: I need to make a number of changes all at once rather then piecemeal:
* Port the Qt 5 code to Qt 6
* Move from qmake to cmake (because Qt 6 made shaders very difficult to manage if you are using qmake and I have a fair amount of shaders for viewing radiographs and using some 3d models)
* Move from Qt Material to Kirigami (will explain why soon)
* Remove my X11 “hacks” and make it work on Wayland properly
* Make it work as an KDE Application
Why Kirigami? Because it handles desktop and touch UX much better than Qt Quick Controls Materials. Kirigami on a desktop looks like an actual desktop app and will re-arrange itself properly to work in touchscreens.
And as to why I wanted to make this a KDE Project: I want to use their Craft building system to help out in the different ports / platforms. That way, once I port it to macOS or Android, keeping up the builds would be much easier.
Because the API and framework would be too different, I couldn’t just make changes to the code directly without breaking the build. So I kept the [Qt5 version at its current location (marked it as my 1.0)](https://gitlab.com/cleardental/cleardental) and then made [a brand new repo for the Qt6 version](https://invent.kde.org/desiotaku/cleardental); and then copied over the source files as I needed them
Reddit
From the linux community on Reddit: An Update on Starting a Dental Practice using Linux (and why transitioning to Wayland will…
Explore this post and more from the linux community