I am pleased to announce the first release of QML.jl, a package to interface with the Qt5 QML GUI toolkit. Feel free to try it out and leave feedback.
- Standard mechanisms for exchanging data with the QML side, so all the QML widgets are available and can be fed with Julia data
- Julia Display support, using PNG only for now (see plot.jl example)
- ListModel to use Julia arrays as models for ListView and so on (see dynamiclist.jl example)
- Support for ModernGL.jl (see gltriangle.jl example)
- Preliminary (i.e. no mouse events in the viewport yet) support for GLVisualize.jl (see glvisualize.jl example)
- Tested on Linux, macOS and Windows
- The inherent QML features, including clean separation of GUI and backend and a high-quality native look.
Note, the easiest way to run the examples on Windows:
How it works
QML is accessed through some custom C++ classes that use the standard Qt5 C++ API and are exposed to Julia using CxxWrap.jl. In fact, the whole package started as a proof-of-concept for CxxWrap following this thread, but it got out of hand
- Fedora dependencies installation was broken in the tagged release, so you should do a Pkg.checkout or manually install qt:
sudo yum install cmake qt5-qtbase-devel qt5-qtquickcontrols qt5-qtquickcontrols2-devel
- There is a build error on Windows, but it’s a harmless typo and the package works after installation anyway
- To run the glvisualize example, you need to checkout GLWindow after adding the GLVisualize package.