Simple QML binding for Go
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Update readme Feb 4, 2019
application.go Make app run on main thread Jan 27, 2019
engine.h Remove unneeded C code Oct 20, 2018
viewer-enum.go Minor change to make int consistent Oct 15, 2018
viewer.cpp Remove unneeded C code Oct 20, 2018
viewer.go Add checks to file watcher Feb 8, 2019


GoDoc Donate Docker

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. QApplication, QQuickView and 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.


  • 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. int, int32, int64, float32, float64, bool and string. For other data type like struct, array or map, you have to use string type 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.

Development Status

First of all, 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.


All documentation for this binding is available in wiki and GoDoc. There are some important sections in wiki that I recommend you to check before you start developing your QML 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.