I’m not sure how you’re coming up with the development time estimates but personally I’ve found Qt to be fast to develop in, both Widgets (using designer) and QML. Hell, I mostly do React web UIs nowadays for various reasons, but I find QML a lot easier and faster than web UI’s, especially for layout (vs bootstrap style layouts as well as flexbox and css grid).
It’s difficult to estimate and I don’t know enough about that applications requirements either, but to give some kind of indication, two years ago I wrote a tool to control an LED (neopixel) strip, or, rather, to create an animation that would be played back on the neopixels. The animation was a json file containing a timeline of events and parameters (think “at time t fade pixels 2 through 10 from rgb x to rgb y over 5 seconds). You could have four parallel timelines that got blended together.
I wrote a GUI editing tool using QML that had three main UI elements: a visualisation of the LEDs, a properties widget and a timeline. It also had start, stop, rewind buttons so you could play the animation back on the visualisation panel. The visualisation panel was also interactive to select individual leds. The timeline had time labels at the top which you could click to select a time and four “swimlanes” where you could draw the effects on, which controlled start time and duration (the rest of the parameters could then be set in the properties window, for the selected effect).
The led visualisation and timeline components were custom made (I don’t remember if they were made using custom QSceneNodes, QOainter or composed out of nested QML elements). The end result wasn’t particularly pretty, but I was going for functionality over look and the audience was limited to myself and one other person. The entire application (including the code to actually drive the leds, which ran on a raspberry pi, but shared code with the GUI tool to make the playback in the UI as realistic as possible) took 3 to 4 days. I’m sure given a few weeks I could have made it look really slick and given a few months could have made the UX something I would be happy to have other users use.
So I don’t know how long your application would take me, especially if it has to look identical to what you have, but I have been quite productive in QML, even when custom components were needed.
I’m not trying to say it would have been a better choice for you, though, just that I often find Qt and QML being under appreciated and underrated.
Although the Qt companies recent behaviour and aggressiveness in getting people to switch from open source to paid license had really put me off to the point where I’m not sure I’d use it for a new project, but those reasons are all not related to anything technical.
You can add Flutter to this list which is becoming a viable option for desktop UIs. The downside is Dart, but that's not so different from picking Pascal/Delphi just for its UI framework.
I would say the downside is Google, because they may just kill Flutter and/or Dart even if they get popular. I just can't make myself hitch anything important to Google's tech anymore.
I do think Dart itself is a fine language, though.
Lazarus already comes with tonnes of components (over 200) and lots of libraries but yes, it is still possible that you want to access some functionality which is not provided natively by the built-in components. But then, you may not.
True. Lazarus/Delphi are the "APEX predators" for UI building. Their only caveat is their lack of resources (Lazarus) and weird costly licensing (Delphi).
Yes, the Delphi licensing cost is horrible. However, if you are using Lazarus you don't need to use Delphi at all.
The lack of sufficient developers who are familiar with Lazarus/Freepascal is a problem though. But again, this is a chicken and egg type of issue.
Getting up to speed in Lazarus does not take very long though because the IDE itself guides a person through in the components and you can clearly see the properties and components they have etc.
Compared to the challenge of wrangling many of these cross-platform frameworks to develop a desktop, it is a piece of cake in Lazarus.
Sadly, what keeps Lazarus back is the fact that most people aren't even aware that it exists and a perceived notion that it is not a cool/capable framework.
At least on Linux, Tk apps still tend to look like remnants from before Windows 95. (Which personally is the main reason I avoid Tk apps whenever possible, including Tkinter apps.)
Do you have to update code to take advantage of native widgets? I use SCID [1] because it's the best FLOSS tool for its purpose, but the interface is still absolutely horrific looking. It doesn't even respect the DPI hints that GTK and QT programs do, so the fonts are too big on my computer.
Does SWT count as stable? Its website looks identical to when I used it (and liked it!) 10+ years ago, so I'd ray probably so :) https://www.eclipse.org/swt/widgets/
I second wxWidgets. It can produce small executables, like 50K, that sport a complete modern UI. Just look for the AUX addition, that the more modern and customizable version.
"Native" GUI toolkits that do not fully implement pen and touch UI are not really native, are they? Do NOT assume your users are on devices that are limited to 20th century UI hardware! (Win10 can fully leverage both pen and touch, iOS does touch well and pen fairly badly...)
You've overstated the comparative advantages of Sciter so much that, upon clicking through, people might flash back to when they found out was a Segway was and shout, "it's a @#$&-+) scooter?!?"
In particular, it's very weird that "doesn't use native widgets" is presented as an advantage, given that apparently the result is that your apps end up looking like this on every platform: https://notes.sciter.com/
It does but by default it uses GTK2. You won’t get the same experience on all platforms with Xamarin Desktop. Each platform has a different rendering engine.
1. Sciter
- Languages: C++/Python/Go/Rust/Pascal (optional: HTML/CSS/tiscript)
- Development time: fast
- Resource usage: light (space and performance)
- Visual customization: easy, doesn't use native widgets.
2. Qt
- Languages: C++/Python (optional: CSS/JS/QML)
- Development time: slow
- Resource usage: quite heavy (space), but well performant
- Visual customization: QtWidgets: hard, QML: easy, doesn't use native widgets.
3. WxWidgets
- Languages: C++/Python
- Development time: slow
- Resource usage: light (space and performance)
- Visual customization: hard, uses native widgets.
4. Lazarus
- Languages: Pascal
- Development time: slow
- Resource usage: light (space and performance)
- Visual customization: hard, uses native widgets.
[1]: https://sciter.com/ - https://quark.sciter.com/
[2]: https://www.qt.io/
[3]: https://www.wxwidgets.org/
[4]: https://www.lazarus-ide.org/