8 ms·
Graphics in Qt 6.0: QRhi, Qt Quick, Qt Quick 3D
- barumi 6y agoDoes anyone feel that this is too little too late?
- detaro 6y agoMost of it, not really. It sort-of makes sense as evolution, bigger issue IMHO is apparently nothing noteworthy about Qt 3D.
- jcelerier 6y agoA fair amount of work has went into porting Qt3D on top of RHI
- detaro 6y agoNice to hear it's not getting left behind, but funny how the post doesn't mention it when talking about Rhi then, but only the shiny new toys.
- mkrus 6y agoHi, there's lots of things coming to Qt3D in Qt6, including an RHI backend, some new API changes, more performance improvement... 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.
- ralph87 6y agoToo little for what and too late for what? Qt has a massive install base in embedded and desktop, and plenty of weird niches like kiosk and interactive media. Also try building out some specialized UI featuring any kind of heavy computation and IO, there are very few practical choices for this. Qt is one of them
- bsdubernerd 6y agoRant ahead. I hate QtQuick controls with a passion. They don't generally feel better than Electron widgets. I say that as a linux user, which also happens to be a dev with tons of Qt experience, which understands the appeal of QML, but simply can't digest the user experience. 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.
- ubercow13 6y agoYes it’s unpleasant. Interestingly the Telegram desktop client kind of looks like a QtQuick app in its design and UX, but afaik is implemented only using Qt widgets, and it actually feels much nicer than equivalent real QtQuick apps such as the similar Matrix clients.
- pjfin123 6y agoWhat's the performance cost of using QTQuick? Does it require bundling a JavaScript interpreter with the application?
- LeSaucy 6y agoYou link against QtQuick to get the qml/js environment to run your qml apps. There is some performance overhead vs straight c++ code, but its negligible even on embedded systems.
- jdu9 6y agoStarting with Qt 6.0, it should be possible to make QJSEngine/v4 (their custom JIT JavaScript engine) optional in your application: >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 https://www.qt.io/blog/2019/08/07/technical-vision-qt-6
- Memosyne 6y agoI've been testing out beta and have noticed the Vulkan backend using around 30mb less memory than GL on Linux. Hopefully we'll see even more reductions when QML3 is released (which really focuses on embedded). Another interesting thing is that QML now has cross-platform desktop widget via QtQuickControls2 (i.e. native Windows and MacOS styles) and the improved CMake support is also pretty convenient. I can now get rid of my .qrc files and just write everything in CMake. I really admire how smooth this migration was and it shows Qt really cares about minimizing breaking changes.
- leiserfg 6y agoI just hope they bring back angle as a cross platform back-end so you can access "low level graphic hardware" without needing to implement also for Metal and Directx11.
- speps 6y agoIt's what they describe though. You can use QRhi to write code that works on all platforms, it's low level enough already. ANGLE is redundant in this case and that's why it's gone. You don't need to write it for Metal or DX11, it'll map the RHI calls correctly and recompile SPIR-V to DXBC for example.
- leiserfg 6y agoTrue, but if you are porting an OpenGl App (like Krita) you'll need to rewrite all your "hardware accelerated code" from scratch with maybe zero gain.
- boudewijnrempt 6y agoWell... It's possible to use QRhi, but the blogpost explicitly says that QRhi is private and "QRhi or the new shader pipeline plays no role here at the moment, in Qt 6.0 at least. "
- divingdragon 6y agoIt appears that one might not even be able to make use of QRhi without porting all the QWidget-based UI over to Qt Quick. 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.
- jcelerier 6y agoI use QRhi for the shader pipeline in https://ossia.io https://ossia.io which is a QWidget desktop app
- 6y ago
- ducktective 6y agoOne of the things that makes me seriously consider QT is Telegram. It is written in QT and in my opinion is one of the best examples of a cross-platform messaging app that Just Works(TM). Especially when one considers the horrible alternatives (looking at you, WhatsApp). - 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...
- LeSaucy 6y agoQt documentation and examples are the best place to start. Qt has some of the best documentation of any SDK I've seen (open or closed source). In a Qt install there are TONS of examples that you can just open in QtCreator and tinker with, all sorted by Qt module.
- dx87 6y agoI'm not a professional dev, but Qt is what I use for any personel project that needs a GUI. I don't think I had to use any resources outside of the official tutorials and documentation on the Qt site, it's well documented. My only complaint with the documentation is that for a lot of their example projects, it doesn't explain it step by step, it just shows you a bunch of code and it's up to you to look up what the different functions do. I was originally going to try to make web apps for my projects, but even with no prior C++ experience, working with Qt was easier to pick up than learning javascript and all the associated tooling required for web applications.
- BlueTemplar 6y agoYeah, or comparing IDE's : - Spyder (Qt, great) - Atom (Electron, mediocre) - Eclipse (Java, bad)
- somurzakov 6y agoTableau Desktop was written in QT and it has the best UX among similar tools. Just compare fast and sleek Tableau UI to clunky PowerBI interface and you will never want to switch to powerbi. Can anyone recommend good learning resources to start developing desktop apps with QT?
- athiercelin 6y agoI don't know who would willingly pick Qt to do anything. It's a massive pain in the ass to use, the licensing is expensive and convoluted, and it codes like you're 20 years behind. The IDE is junk, the tooling is garbage, the slightest version shift breaks compatibility, the library conflicts with same names of objects, etc... 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.
- Kelteseth 6y ago> It's a massive pain in the ass to use 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] https://gitlab.com/kelteseth/ScreenPlay https://gitlab.com/kelteseth/ScreenPlay
- pjmlp 6y ago> QtCreator is easily the best c++ in town. Actually I would assert that belongs to C++ Builder, with its RAD tooling.
- deleted 6y ago[deleted]
- dkersten 6y agoC++ Builder costs €1500 for the first year though and the community edition limits you to no more than €5k revenue, while Qt Creator is completely free and open source. So I don’t really see them in the same category, personally.
- TazeTSchnitzel 6y agoThe combination of removing ANGLE (guaranteed baseline GL support on Windows) with it not being possible to use the new rendering stuff for APIs other than GL if you aren't using Qt Quick seems potentially problematic? (I have no experience with these tools though.)