7 ms·
I'm not sure that any of these UI frameworks are going to get much traction, simply because they aren't as flexible, and don't solve web problems as well as the
by zerkten 9y ago
I'm not sure that any of these UI frameworks are going to get much traction, simply because they aren't as flexible, and don't solve web problems as well as the existing solutions. A search turned up https://github.com/qmlweb/qmlweb https://github.com/qmlweb/qmlweb, but running QML from JS doesn't seem like the author's vision, or something that would be appealing to many developers.
How is QML different from XAML? XAML isn't purely a UI markup format, but it doesn't seem to have gotten traction with the web development community. Someone has created http://www.cshtml5.com/ http://www.cshtml5.com/, but it's not something I've seen developers talk about within the .NET community (the most likely people to adopt XAML, if it became available for the web.)
- goalieca 9y agoXaml is the least pleasurable framework I've ever used. I have two reasons: MVVM seems like an anti-pattern and the .Net API is builds on is too complicated. I went from a project using xaml requiring massive system resources to another built in qt running speedily on an intel atom. I wasn't too familiar with either frameworks when I started. Qt was also way easier to maintain despite being built on top of c++ template magic
- whowouldathunk 9y agoXAML has a high learning curve and lots of ways to shoot yourself in the foot. But it works well. I shipped an embedded real-time data visualization product that used WPF XAML for the UI and ran perfectly smooth on a second-gen Intel Atom. The latest UWP incarnation of XAML is all native and used heavily in Windows itself. MVVM is not an anti-pattern, it's just a simple way to communicate changes to a retained-mode UI framework (XAML's rough analog to React's shouldComponentUpdate). Data binding prevents a lot of error-prone glue code. Disclosure: I work at Microsoft.
- jcelerier 9y ago> and ran perfectly smooth on a second-gen Intel Atom To give my reference, I'm getting smooth 1080p 60fps when not too many shaders are involved with Qt on a Raspberry Pi 3.
- martin_ky 9y agoWe get interactive framerates ~30fps with Qt Quick on Raspberry Pi B+ with fullscreen video playback in the background.
- Jordanpomeroy 9y agoWPF is very complex. The learning curve is extremely steep. The (early/lack of) evolution of the .NET runtime and the C# language also made WPF more difficult than it would be if it were created today. And, finally, Microsoft never bought into it fully. That said, it is, by far, the best desktop UI library for Windows-only apps. I wouldn't consider using anything else until/unless the following were equal to WPF. The amount of engineering gone into the framework, the thoughtful design, the critical mass of use.
- jancsika 9y ago> I'm not sure that any of these UI frameworks are going to get much traction, simply because they aren't as flexible, and don't solve web problems as well as the existing solutions. That's a great point. Here's a clarifying question: regardless of the quality of HTML5 standards, does access to inline svg DOM nodes fulfill an important purpose? If you think the answer is yes, then QML cannot replace HTML5 because its primitives are less expressive than SVG paths.
- jcelerier 9y agoPath and shape support is coming in 5.10: https://doc-snapshots.qt.io/qt5-dev/qml-qtquick-path.html https://doc-snapshots.qt.io/qt5-dev/qml-qtquick-path.html
- jancsika 9y agoGreat! How about patterns and vector effects?
- jcelerier 9y agohonestly don't know what those are, could you share a link ?
- jancsika 9y agosvg patterns: https://www.w3.org/TR/SVG/pservers.html https://www.w3.org/TR/SVG/pservers.html Not sure where svg vector-effect is (perhaps svg 1.2) but it looks like the value "non-scaling-stroke" is supported everywhere except IE. Also-- does Qt have an equivalent of devtools can ship with the app so that the state of the view can be queried, mutated, and REPL'd in the user's running instance?
- jcelerier 9y agoGradients are supported, patterns not (yet) : https://blog.qt.io/blog/2017/07/07/let-there-be-shapes/ https://blog.qt.io/blog/2017/07/07/let-there-be-shapes/ > Also-- does Qt have an equivalent of devtools can ship with the app so that the state of the view can be queried, mutated, and REPL'd in the user's running instance? Depends. There is Gammaray which can connect to a Qt process (including remotely, quite useful for embedded) & where you can change properties of your objects on the fly : https://www.kdab.com/development-resources/qt-tools/gammaray/ https://www.kdab.com/development-resources/qt-tools/gammaray... For live reloading, it isn't proposed by default in shipped applications but there are many ways to do it : https://fr.slideshare.net/ICSinc/how-best-to-realize-a-runtime-reload-of-qml https://fr.slideshare.net/ICSinc/how-best-to-realize-a-runti.... The IDE nowadays does it for instance : http://blog.qt.io/blog/2017/05/24/qt-quick-designer-qt-creator-4-3/ http://blog.qt.io/blog/2017/05/24/qt-quick-designer-qt-creat.... However, in my experience on live reloading (with QML, Unity3D and Python), it only works well with environments that don't interface to native code. Else it's way too easy to leave some state hanging in a bad way in a DLL (and then you get undebuggable crashes upon undebuggable crashes). Likewise, there is no REPL provided (since it's declarative in nature... there are no "instructions" being executed directly, only reactions to actions). But implementing your own takes a few lines. I wonder what its point would be though.
- jcelerier 9y ago> How is QML different from XAML? QML is a declarative & reactive programming language, while XAML (and FXML mentioned earlier) are only for markup. You can't do this in pure XAML: Item { x: 5 y: x + 2 Timer { onTriggered: x = x+1; interval: 50 } } Here, every 50 milliseconds, x would be updated, and y would be updated automatically accordingly to the new value of x.
- martin_ky 9y ago> I'm not sure that any of these UI frameworks are going to get much traction QML / Qt Quick gets a lot of traction, from mobile and embedded systems developers and lately a lot from automotive industry. It's just largely unknown to web developers, because it's not on that platform. What I would like to see, is that it got noticed from web developers too and then maybe it will get some push to get to the web. > they aren't as flexible, don't solve web problems as well as the existing solutions IMO, it's the current web technology that creates those "web problems" :) I don't say that QML solves them all. But it couldn't hurt if we have an alternative to HTML+CSS.
- btschaegg 9y agoIt's also interesting to see that they are used for things like coffe machines and the like. This is mostly due to its performance on low-end hardware (you won't want to be using an Atom PC with Windows to control a coffee machine). This in itself is also quite a benefit to Qt - although from a C/C++ developer's point of view it still looks a bit bloated ;-)