Re:A Simple Rust GUI with QML
by david-cako on Thursday February 23, 2017 @12:40PM
(#13715837)
What is it about Rust that makes porting QT different from any other language?
[ Parent
| on HN ]
C++ is notoriously hard to bind. The only high-quality Qt bindings I know of are Python ones (Pyside).
shameless plug for my Go binding:
https://github.com/therecipe/qt
it's still WIP though
A recent one: Lisp (ECL) with QML integration: https://gitlab.com/eql/EQL5/wikis/home (see QML link: direct Lisp function calls from QML, examples of QML generation from Lisp).
How did PyQt manage to solve this problem?
PyQt has a whole other project, called sip, in service to it. If I understand it correctly, sip generates the bindings semi-automatically with a lot of special cases for Qt. Compared to the other set of Python C++ library bindings I've used (Vtk), they're magnificent.
Re:A Simple Rust GUI with QML
by mindv0rtex on Thursday February 23, 2017 @10:54PM
(#13720825)
Any tips you can give as far as starting to learn VTK, especially its Python bindings?
My experience is with maintaining somebody else's code, so I learned by cutting myself on its sharp edges. My advice is to avoid if possible. Unlike Qt, you can't subclass Vtk objects in Python. Which is a huge pain, because the Vtk design is heavily object-oriented. The autogenerated documentation is pretty unhelpful. It looks like this: http://www.vtk.org/doc/nightly/html/classvtkSliderWidget.htm.... Compare that with the magnificent Qt documentation: http://doc.qt.io/qt-5/qslider.html, and you'll see why I prefer working with Qt.
What about PyQt5? Or does it work differently?
PyQt5 does not seem to be maintained. The last couple of times I checked it, it was pretty dead: one maintainer with no time.
I think you have this backwards. PyQt5 is well maintained by a company that produces a GPL version and sells a commercially licensed version, which was Qt's original business model. Pyside was originally created by Nokia back when Nokia bought Qt, re-licensed it as LGPL, and needed LGPL python bindings. It's no longer maintained and only works with Qt4. Pyside 2 is a port of pyside to Qt 5 that seems to have some level of activity, but no releases..
Templatize the language, toolkit version and that could just about describe every binding of every c++ toolkit ever made.
I think the Qt Company is trying to revive pyside, but they have a lot of catching up to do. Not sure if they plan to do an update on their bindings generator (Shiboken) too, or start from scratch on that front.