I'm not a fan of the language but QtQuick & QML is what I'd use for this type of widgets. OTOH I am starting two projects at work, one being a traditional desktop app and another being an HMI with lots of functionality, and decided to just go with QtWidgets and save myself from all of QML's JS influences and C++ interop boilerplate.
QML's declarative syntax combined with C++ performance and its property binding system makes it uniquely powerful for responsive desktop UIs without the overhead of web technologies.
Except you can’t control Qml from C++ and it advised not to do that.
They also essentially have a performance limitation that you need a license to bypass. Slint has removed this performance limitation but is not compatible with Qml.
QML is great for an initial prototype but awful for reducing complexity for anything bigger than a button counter. This is because it extracts the design into a different language instead of letting you use C++ classes. People often don’t build complex applications in it because of this.
I have found better value from immediate mode GUIs like Iced or Egui.
I'm not a fan of the language but QtQuick & QML is what I'd use for this type of widgets. OTOH I am starting two projects at work, one being a traditional desktop app and another being an HMI with lots of functionality, and decided to just go with QtWidgets and save myself from all of QML's JS influences and C++ interop boilerplate.
What boilerplate?
There’s a whole Javascript rendering engine that ships with every compiled app so QML can handle animations and the like.
To get the Qml engine to work with any other code you need to write the bioler plate interop between your language and the Qml engine.
QML's declarative syntax combined with C++ performance and its property binding system makes it uniquely powerful for responsive desktop UIs without the overhead of web technologies.
Except you can’t control Qml from C++ and it advised not to do that.
They also essentially have a performance limitation that you need a license to bypass. Slint has removed this performance limitation but is not compatible with Qml.
>They also essentially have a performance limitation that you need a license to bypass.
Can you elaborate?
1 reply →
It would be wonderful for games as well but I don't see it used there much
QML is great for an initial prototype but awful for reducing complexity for anything bigger than a button counter. This is because it extracts the design into a different language instead of letting you use C++ classes. People often don’t build complex applications in it because of this.
I have found better value from immediate mode GUIs like Iced or Egui.