Hacker News new | ask | show | jobs
by IshKebab 3839 days ago
I use Qt5 extensively and these are the things I don't like (mostly QML-specific):

* It's HUGE. A "hello world" QML program is like 50 MB. You can get it down to about 20 MB is you use a custom Unicode library build (there is a 20 MB DLL which just contains Unicode data).

* The QML compiler is only in the commercial version. I know there is a third party open source version, but that is too much hassle. And yeah maybe I should pay, but hey!

* Lots of things still are impossible with QML. There's no decent basic text widget (e.g. for a log output).

* You can make custom QML widgets, but they can't render text. Kind of limiting!

* I don't think the basic premise of QML works that well. There is such a big difference between C++ types and QML types most of your code ends up dealing with the mapping. Especially lists of things are very hard to get right (and the documentation doesn't really point you to the "right" solution - which is to subclass QAbstractListModel if you were wondering).

* QML seems very hacky and javascripty - it doesn't scale well. Especially scopes and id's.

* Some QML things are weirdly hard, for example

- Rich tooltips

- Adding padding around list items

- Doing anything with the rich text widget.

That said, I still really like it. I'd just like it more if they:

1. Reduce the size.

2. Redo QML (again!). I'd be even ok with a custom language. It can be similar to Javascript, but it should support the native C++ Qt types (and custom ones) much easier.

1 comments

You can actually build Qt without icu ( pass -no-icu to configure[.exe] when building Qt)

QML is designed with mobile in mind. For heavy desktop UI, Qt Quick Components, kinda fills the need.

Qt Quick 3 would be unwarranted, but a lot of maturation needs to happen.

It might be, but last time I tried Qt on mobile I ended up redoing the app in Java, C++/CX with XAML with C++ for the common code.

The effort for doing from scratch native widgets in QML was greater than the approach I took, specially because Qt didn't provide wrappers for the APIs I cared about.