Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It does happen though - Qt tries very hard to do that. I don't know about literally everything, but the majority of platform-specific features/optimizations can be exposed through Qt with enough work.

And what is the result? Everyone complains that Qt is too hard to use, and so it has utterly lost the cross-platform war to Electron, and meanwhile the devs who want the platform-native functionality (like the OP of the article) use the OS-native toolchains instead.

There's no silver bullet here.



Qt is probably closest among cross platform frameworks, but comes with some thorns that can be difficult to ignore and contribute to that “hard to use” sentiment.

The way Qt Widgets is for practical purposes usable only with C++ or Python is one such thorn, as is its use of custom types like QString. Both increase friction significantly as many devs aren’t able to use their preferred language and can’t use the language primitives they’re familiar with. Qt Widgets apps also require a good deal extra elbowgrease to make feel good on all supported platforms due to oddities in widget layout and drawing, and to my knowledge use of newer features (like blurred “vibrant” (macOS) or “mica” (Windows) window backgrounds requires dropping down to native code.

For QML, devs are stuck with JavaScript (which while functional, isn’t everybody’s cup of tea) and face some of the same issues that web/electron devs do with needing to pull in third party frameworks (like MauiKit[0]) to have a usable widget set.

Distribution is a problem across the board in Qt with tooling being a less than great state. It’s a very common issue to see crashes in Qt apps as a result of some incantation being missing.

In short Qt has the right idea, but I believe it’s held back by many of its technical and design decisions. I’d like to see a project that’s like it, but built in a modern language with good C interop so high quality efficient bindings can be easily generated, and has a bigger focus on good DX.

[0]: https://mauikit.org


You can use Rust with QML[1].

QML is actually pretty amazing. I've been building my block editor[2] view entirely in QML while the model is in C++. This separation of logic and presentation works great. And yes, there are some crashes sometimes (that I find quite easy to debug thanks to the built-in debugger), but take for example a similar app that's built with Rust and Dart[3], in my testing there were still memory leaks that caused my computer to hang. It's better to know you have a bug than for it to be hidden from you.

I agree with parent commenter, saying these cross-platform frameworks will end up supporting the least common denominator set of features. But I found with external open source libraries, the community is catching up very fast. For example, you want the awesome translucency macOS apps have for your Qt app? Here you go[4]. Many such cases. It's also pretty straightforward to add your own custom OS-dependent code, especially so, if someone already open sourced his approach. I recently wanted to move the traffic light buttons on macOS for my app, but couldn't figure the Objective-C code for that. I ended up looking at either Tauri or Electron source code and found my answer.

[1] https://github.com/woboq/qmetaobject-rs

[2] https://www.get-plume.com/

[3] https://www.appflowy.io/

[4] https://github.com/stdware/qwindowkit


You have no idea how valuable and helpful this comment was to me. Thank you very much!


I'm glad!


You talk as if Qt was really bad. Do you know of any toolkit that is better? I mean: Electron is a memory hog by default, Flutter or React I do not see they are available in those many languages you demand from Qt.

Which is that platonic toolkit I do not know of that is easy to distribute, productive, fast and available in any language?


For cross platform, from a technical standpoint Qt is one of best and that’s the problem. The best isn’t good enough, not for the masses that instead chose Electron and certainly not for the sorts of devs making polished Apple platform apps.

Developer experience is extremely important but it’s consistently something that’s swept under the rug with Qt, much to its detriment. Devs at large would rather be limited to a single platform or make huge tradeoffs in efficiency than live with bad DX.


The Telegram Desktop app is written with Qt, and I think they've done a pretty good job. I think there's a certain bias here. Most of the popular Qt apps are either open source or Enterprise software, both don't care much about UX and aesthetics. What I'm trying to get at, is that with some effort Qt apps can be on the same level (or very close) to native apps. That's what I aspire with my Qt apps as well.


I'd like to take the opportunity to mention Slint: a new toolkit in the scene, is inspired by the spirit of Qt while aiming to address its shortcomings https://slint.dev


I've spent (what I thought was) quite a bit of time researching so many of these alternatives posted on this thread and this is the first I hear of slint, so thank you for sharing. It may be just what I was looking for


> The way Qt Widgets is for practical purposes usable only with C++ or Python is one such thorn

What happened with using the best tool for the job?

So what if C++ and Python are the only bindings.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: