Coder Social home page Coder Social logo

praveenmunagapati / qmlweb Goto Github PK

View Code? Open in Web Editor NEW

This project forked from qmlweb/qmlweb

0.0 1.0 0.0 5.18 MB

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

Home Page: https://qmlweb.github.io/

License: Other

JavaScript 81.51% QML 18.49%

qmlweb's Introduction

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

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.

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.

Related efforts

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

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.

qmlweb's People

Contributors

chalker avatar akreuzkamp avatar plaristote avatar pavelvasev avatar stephenmdangelo avatar lpaimen avatar henrikrudstrom avatar igosoft avatar arnopaehler avatar hhaveri avatar machinekoder avatar mrjoshuak avatar gaubee avatar aspotashev avatar a-andreyev avatar jangmarker avatar somsubhra avatar aphonicchaos avatar labsin avatar shry15harsh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.