Qt 6.0 Beta 4 Released
phoronix.com
phoronix.com
Qt doesn't really seem to focus much on this form factor, but they do have a big win; LG's webOS.
I've found some basic blog posts on the topic but nothing that has really convinced me. Anyone with first-hand experience on how this would work? A lot of upstream swimming?
For my skill level and effort put forth, I don't know what I could have used to would have worked as well.
Gstreamer's qmlglsink works quite well with zero copy video playback. So CPU usage sits at 5-10% for a nice UI overlaid on top of a 1080p video stream on an embedded system. There are other third-party qt wrappers for gstreamer, but we didn't feel the need for it. Some were outdated too.
https://github.com/GStreamer/gst-plugins-good/tree/master/te...
Those examples show how to do basic video playback using gstreamer.
The key navigation really isn't that difficult either: https://doc.qt.io/qt-5/qtquick-input-focus.html
Just build your UI with a PageStack of Pages consisting of ListViews and GridViews, and that takes care of 90% of your navigation issues without you having to do anything.
For eg.
* filesystem explorer: ListView
* playback controls: GridView
Video Player Page: filesystem explorer + playback controls + video item and the page determines which item should get keyboard focus, based on certain actions/conditions.
So far, the main pain point was licensing. Some of the very useful qt quick components (like layouts for one) are licensed under LGPL v3, so you have to be careful if you're including then in your system - because then you'd have to provide a way for the user to swap out qt libraries or have to go for the commercial version.
Another pain point was CI. We had to manually build our own container with the Qt version we needed. The situation for CI improved recently i think.
Licensing: Thanks for that warning. I get that they want to make money, primarily off embedded customers. Haven't figured out my licensing model for this project yet, might even go full GPL.
https://github.com/qt-labs/cursormanagement
I'm guessing most Quick widgets aren't immediately usable in this form factor. I'd guess they'd need heavy skinning efforts and custom cursor management to have a chance, and still only the most basic ones would be usable.
Is there any other ~open UI toolkit that's good at TV-style/D-pad-focused navigation out there?
Yes, navigation is something you'd need to at least partially build yourself, but in my experience it's not a big deal (I haven't done TV apps specifically, but lots of embedded things with D-pad-like controls), since most UIs have clear navigation hierarchy. QML is very common for this kind of application, and I'm not aware of anything else widely used and open that'd be better for this specific thing.
Yes, probably. I was still holding out hope for some framework that had some decent basic widget designs for a TV-like format so that I didn't have to do all of the work on my own, but I guess that doesn't exist. (I can adjust the design of my app to whatever is available.)
Thanks!
> Qt 6.0 does drop Qt Script and also removes Qt Multimedia / Qt Bluetooth / Qt Virtual-Keyboard modules until a later Qt6 version.
Qt Multimedia is actually pretty important, but I assume they have a good plan in place for that.
Note that minor versions of Qt are (modulo the occasional bug) API and forward-ABI compatible - an app built against Qt 5.x should still work without being rebuilt when updating dlls to Qt 5.15
This obviously won't work for Qt 6 - there are some API changes, deprecated / removed stuff, in Qt 6 we have `template<typename T> using QVector = QList<T>;`...
> Qt 6.0 does drop Qt Script and also removes Qt Multimedia / Qt Bluetooth / Qt Virtual-Keyboard modules until a later Qt6 version.
So I guess it is major if you use those APIs.
Consider that removing any public function / method / class is an API and ABI break. Qt does do these with major releases, but how much can vary considerably from version transition to version transition.