All Projects → qmlweb → Qmlweb

qmlweb / Qmlweb

Licence: other
A QML engine in a web browser. Current state: fixing things…

Programming Languages

javascript
184084 projects - #8 most used programming language
declarative
70 projects

Projects that are alternatives of or similar to Qmlweb

Qmlcore
QML to Javascript/HTML5 translator, both for mobile and desktop targets
Stars: ✭ 258 (-63.3%)
Mutual labels:  qml, declarative-ui, html5
Gomponents
Declarative view components in Go, that can render to HTML5.
Stars: ✭ 49 (-93.03%)
Mutual labels:  declarative-ui, html5
Unity8
A convergent desktop environment. Now called Lomiri, but still developed in this repository.
Stars: ✭ 610 (-13.23%)
Mutual labels:  qml
Scihubeva
A Cross Platform Sci-Hub GUI Application
Stars: ✭ 683 (-2.84%)
Mutual labels:  qml
Jspaint
🎨 Classic MS Paint, REVIVED + ✨Extras
Stars: ✭ 5,972 (+749.5%)
Mutual labels:  html5
Walk
A Windows GUI toolkit for the Go Programming Language
Stars: ✭ 5,813 (+726.88%)
Mutual labels:  declarative-ui
Alphatab
alphaTab is a cross platform music notation and guitar tablature rendering library.
Stars: ✭ 647 (-7.97%)
Mutual labels:  html5
J2html
Java to HTML generator. Enjoy typesafe HTML generation.
Stars: ✭ 604 (-14.08%)
Mutual labels:  html5
Moxie
lightweight platform-agnostic tools for declarative UI
Stars: ✭ 691 (-1.71%)
Mutual labels:  declarative-ui
Aplayer
🍭 Wow, such a beautiful HTML5 music player
Stars: ✭ 5,887 (+737.41%)
Mutual labels:  html5
Html5 Animation
Foundation HTML5 Animation with JavaScript example code and book exercises.
Stars: ✭ 667 (-5.12%)
Mutual labels:  html5
Webworldwind
The NASA WorldWind Javascript SDK (WebWW) includes the library and examples for creating geo-browser web applications and for embedding a 3D globe in HTML5 web pages.
Stars: ✭ 628 (-10.67%)
Mutual labels:  html5
Puzzlescript
Open Source HTML5 Puzzle Game Engine
Stars: ✭ 620 (-11.81%)
Mutual labels:  html5
Qtquickexamples
QtQuick相关的技术分享
Stars: ✭ 657 (-6.54%)
Mutual labels:  qml
Quickqanava
C++14 network/graph visualization library / Qt node editor.
Stars: ✭ 611 (-13.09%)
Mutual labels:  qml
Webglobe
基于HTML5原生WebGL实现的轻量级Google Earth三维地图引擎
Stars: ✭ 685 (-2.56%)
Mutual labels:  html5
Driveway
pure CSS masonry layouts
Stars: ✭ 607 (-13.66%)
Mutual labels:  html5
Douyuhtml5player
替换斗鱼的Flash弹幕播放器
Stars: ✭ 627 (-10.81%)
Mutual labels:  html5
Ep
enhance your HTML5 progress bars with minimal effort!
Stars: ✭ 648 (-7.82%)
Mutual labels:  html5
Sheetjs
📗 SheetJS Community Edition -- Spreadsheet Data Toolkit
Stars: ✭ 28,479 (+3951.07%)
Mutual labels:  html5

JavaScript powered QML Engine

Join the chat at https://gitter.im/qmlweb/qmlweb Build Status codecov

npm Bower GitHub tag

This project aims at bringing the power of QML to the web browser. Here's a sample of how QML looks like:

import QtQuick 2.0

Rectangle {
   width: 500; height: 200
   color: "lightgray"

   Text {
       id: helloText
       text: "Hello world!"
       anchors.verticalCenter: parent.verticalCenter
       anchors.horizontalCenter: parent.horizontalCenter
       font.pointSize: 24; font.bold: true
   }
}

How to use

Add the library to your web page

Using one of the methods below, install the qmlweb JavaScript library:

  • npmnpm install qmlweb
  • GitHub releasestar -xaf v0.2.0.tar.gz
  • Manually (recommended if you cloned from git) — npm install && npm run build

Next, simply add lib/qmlweb.js to the list of other JavaScript files in your app's HTML file:

<script type="text/javascript" src="/lib/qmlweb.js"></script>

See the examples directory for more details and complete usage examples.

Testing from a local folder

Note that due to security restrictions (which are there to protect you!) browsers do not allow loading arbitrary local files, which includes *.qml.

Because of that, to test the goodness of QmlWeb on your own machine, you have to spin up a local http server, e.g. by running npx http-server.

Or try out qmlweb-viewer.

API

You can use DOM elements as the base for QML components:

var div = document.getElementById('embed'); // this is your DOM element
var engine = new QmlWeb.QMLEngine(div);
engine.loadFile('qml/main.qml');
engine.start();

See also engine.loadQML for constructing a QML element from a source string.

Auto-load

You can modify the <body> element to specify what QML file to load when the page is opened. The loaded QML element will fill the whole page.

<!DOCTYPE html>
<html>
  <head>
    <title>QML Auto-load Example</title>
    <script type="text/javascript" src="/lib/qmlweb.js"></script>
  </head>
  <body style="margin: 0" data-qml="qml/main.qml">
  </body>
</html>

Web Components

You can register QML files as Custom Elements.

Note: browser support for Custom Elements v1 is limited, and QmlWeb does not include a polyfill. You might want to load a polyfill manually.

Registering the element:

QmlWeb.registerElement('qml-main', 'qml/main.qml');

Using the element:

<qml-main height="300" color="red" firstName="World"></qml-main>

Top-level properties get exported as HTML attributes and are binded to them, real-time updates are possible.

Supported modules and elements

Approximate modules support status for the git version could be viewed on the Projects page.

You can click on the module cards for per-class details.

How to use with Gulp

See gulp-qmlweb package.

How to extend

See Extending.

Related efforts

Qt Quick WebGL streaming

That will allow users to run the main Qt process on the server and render on HTML clients through WebGL. Qt WebGL streaming requires one application process on server per each client — only the painting is delegated to the client.

The usecase differs significantly from QmlWeb, as QmlWeb runs all code on the clients, attempting to reuse browser APIs as much as possible to provide better integration. No server-side code is needed, server provides static files.

PureQml framework

PureQml aims to implement a language close to original QML, but it does not target 100% compatibility with Qt QML, unlike QmlWeb. They also provide a framework based on their language and target support for a great variety of platforms.

Qt/QML + Emscripten

Transplitting all the required Qt/QML libraries to JS/WebAssembley and rendering everything to Canvas provides the best possible compatibility with upstream Qt. That comes at a price, though — the runtime is pretty big, and that approach does not allow to reuse many existing browser APIs and components.

Qt for WebAssembly port

Similar as the above «Qt/QML + Emscripten», but more up to date. Upstream issue: QTBUG-63917.

Examples at https://msorvig.github.io/qt-webassembly-examples/.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].