Qamel is a simple QML binding for Go, heavily inspired by
therecipe/qt. This package only binds Qt's classes that used for creating a simple QML app, i.e.
QQMLApplicationEngine. It's still work-in progress, however it should be stable enough to use in production (as in I'm already using it in prod without problem, your situations may vary).
- Published under MIT License, which means you can use this binding for whatever you want.
- Since it only binds the small set of Qt's class, the build time is quite fast.
- It's available as Docker image, which means you can create QML app without installing Qt in your PC. Go is still needed though.
- The binding itself is really simple and small. I also think I did a good job on commenting my code, so people should be able to fork it easily.
- It supports live reload which is really useful while working on GUI.
- I've only tested this in Linux and Windows, so I'm not sure about Mac OS. It should works though, since the code itself is really simple.
- When declaring custom QML object, this binding only supports basic data type, i.e.
string. For other data type like struct, array or map, you have to use
stringtype and pass it as JSON value.
- Thanks to Go and Qt, in theory, the app built using this binding can be cross compiled from and to Windows, Linux and MacOS. However, since I only have Linux and Windows PC, I only able to test cross compiling between Linux and Windows.
I've created this binding for my job, so it's actively maintained. However, since I created it for the sake of the job, if the issues are not critical and doesn't affect my job or workflow, it might take a long time before I work on it. Therefore, all PRs and contributors will always be welcomed.
- Frequently Asked Questions, especially the comparison with other binding.
- Getting Started
- CLI Usage
- Building App
You might also want to check Qt's official documentation about QML :
For demo, you can check out Qamel-HN, a HackerNews reader built with QML and Go.
Qamel is distributed under MIT license, which means you can use and modify it however you want. However, if you make an enhancement for it, if possible, please send a pull request. If you like this project, please consider donating to me either via PayPal or Ko-Fi.