Other than that, beginners to the codebase tend to break property bindings without realizing. There are a few tools to catch this at runtime, but would be nice to do this at compile time.
Also not all of the "Desktop widgets" were readily available in QML in Qt 5 (not sure what the status in Qt 6), and you tend to roll your own Table Views etc.. and those ones need even more work to work like native widgets, supporting keyboard navigation etc...
Overall Qt5/QML was fun to work with, but I did miss a few bits that were readily available on QWidgets.
Button {
text: "Save"
enabled: textField.text.length > 0 // this is reactive to the value of a TextField
onClicked: Backend.save()
}
as soon as you try to for example implement the save method in JS/QML this starts to become very painful as it often ends up with a lot of spaghetti code. The very cool thing with QML is that the save function can be simply implemented in C++ like this. Backend::save()
{
// call QFile/QNetworkRequest/...
}
It force the programmer to split their logic from the UI layer which I don't consider a bad thing.[1]: https://github.com/PeaceFounder/PeaceFounderClient/tree/main
[2]: https://github.com/PeaceFounder/PeaceFounderClient/releases
[3]: https://github.com/PeaceFounder/PeaceFounderClient/blob/main...
[4]: https://github.com/PeaceFounder/PeaceFounderClient/blob/cf9d...