Skip to content

qmlweb/qmlweb

 
 

Repository files navigation

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
  • Bowerbower 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/qt.js to the list of other JavaScript files in your app's HTML file:

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

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

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/qt.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.

History

  1. git://anongit.kde.org/qmlweb, see Webapps written in qml not far from reality anymore,
  2. @JoshuaKolden/qmlweb,
  3. @Plaristote/qmlweb,
  4. @labsin/qmlweb,
  5. @arnopaehler/qmlweb.

About

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

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 22