Graphics in Qt 6.0: QRhi, Qt Quick, Qt Quick 3D
qt.io
qt.io
- Linux and Windows clients work smoothly OOTB. No UI lag/jitter. No RAM/CPU hogging.
- Drag and drop works. Floating video playback works. Background audio playback works. Minimize to tray, basic Markdown formatting, preview links, mp4 playback as gif, they all work flawlessly.
I don't even remember if I could throw something at it in a way that it would hang. I don't know how they did it, comprehensive unit-tests or good architecture design, but it sure is a breath of fresh air in this day and age which Electron monsters have set the bar too low that normal users don't remember the latency/resposive-ness of the 90s and 2000s software.
Any experienced QT devs can point us where to start learning QT? Good books/tutorials/blogs? I have some JavaFX experience...
The only thing TDesktop struggles with is mixed DPI scaling.
And only because they implemented UI scaling before Qt did, and so don't rely on its mechanisms, which is now hard to refactor.
Looking at the source today, Telegram deliberately disables runtime DPI scaling after the application starts up. And maybe that's a good thing, considering how changing DPI between 100% and 150% leaves running Qt apps with misshapen text (sometimes tiny, sometimes huge and overflowing the menus and buttons).
https://github.com/telegramdesktop/tdesktop/issues/1121
And I only read enough of this to gauge whether there is a workaround. :P
The GUI designer seems pretty capable and I did try it out but I ended up coding everything directly. That's not a mark against QtDesigner, that's happened with every visual GUI design tool I've ever used.
Why would you maintain 2 targets doing the same thing for an OS?
https://www.youtube.com/watch?v=6KtOzh0StTc&list=PL2D1942A46...
I was trying to learn Qt, and it just wasn't clicking, but watching these videos and suddenly Qt just made sense. This was nearly 10 years ago, and note that some of the syntax has changed, particularly Signals/Slots.
But Qt is riddled with lots of tweaks, hacks, bugs - it's a beast, but sometimes a wild one, as you don't know what's going on deep down...
However there are also many Qt apps that are terrible in this regard, which I find a bit sad because it suggests to me that Qt absolutely has the feature set to build great software, but doesn't really encourage it.
Most of the UIs designed with Quick (I'm thinking about some matrix clients I was playing with, but not exclusively) are also designed in a way which is totally orthogonal to what I would expect a desktop UI to be.
I've seen some of my favorite programs being ruined in the transition from QtWidgets to QML. One part being the horrid controls, the second being the "new way" of UI design QML easily adapts itself to.
I'm saddened by this. I was hoping Qt to be the escape path from the mess that Gtk was going to, but QML is worse.
>Make JavaScript an optional feature of QML.
>Having a full JavaScript engine when using QML can complicate things and is an overhead especially when targeting low-end hardware such as microcontrollers. It is however extremely useful in many use cases.
Source: https://www.qt.io/blog/2019/08/07/technical-vision-qt-6
What a sweet way of saying "yeah, it didn't work at all on microcontrollers"
I really admire how smooth this migration was and it shows Qt really cares about minimizing breaking changes.
Can anyone recommend good learning resources to start developing desktop apps with QT?
Given how some high-profile Qt applications are using OpenGL, continuing with using ANGLE would seem to be the superior choice over having to rewrite everything with a completely new API.
Actually, the post also stated that using `QQuickWidget` will force OpenGL composition, so if an application uses QML inside QWidget it looks like QRhi will not be usable at all. It would seem that QWidget composition does not support QRhi.
top is your most classic QTreeView, bottom is the widget with content rendered through RHI (a preview of a shader effect)
I believe there is a reason why we don't call createWindowContainer with our use of QOpenGLWidget, though I currently can't remember it. If it still applies, then I suppose we might not be able to use QRhi.
Main issue is that The Qt Company doesn't communicate about it at all. They made a commercial decision to go for a new API (qtquick3d) and as far as they are concerned, the graphics stack no longer includes qt3d.
We (KDAB) will put out a couple of blog posts about the upcoming changes soon.
Qt is my new practical joke for engineers complaining about how bad they have it in their current stack.
Linux really needs a better UI framework because all other platforms are better and faster to implement in native languages/apis.
I use it every day. No more pain than any other UI framework
> the licensing is expensive
Use LGPL if your platform allows it
> convoluted
Yes. The Qt company wants you to pay for their commercial license.
> and it codes like you're 20 years behind
With QWidgets yes. QML is the reason I would not want to start a new app in JS/Electron
> The IDE is junk
QtCreator is easily the best c++ in town.
> The slightest version shift breaks compatibility
Never had any problem the last 4 years with my projects upgrading from 5.8 -> 5.15 [1]
Actually I would assert that belongs to C++ Builder, with its RAD tooling.
Luckily there are places where employers still see a value paying for tooling.