Qt API bindings generator for Node.js
- Qt API exposed in js
- Node.js integrated and runs in a single event loop
How to build
- subversion (for V8 make dependencies)
- C++11 supporting compiler, tested with gcc 4.7.2, 4.7.3, clang 3.4
- cmake (for building cpgf library)
- make (some automation in qmake build files invokes it)
- OpenGL development files
- libffi development files
- Boost (required for tests) - tested with 1.52
# download source git clone https://github.com/svalaskevicius/qtjs-generator.git cd qtjs-generator/ git submodule update --init --recursive # build it! mkdir -p build cd build <path to Qt>/bin/qmake ../ -recursive make -j4 # (this will take a while)
Updating Qt bindings
- JDK (for building the metadata generator)
- bash & perl (for preprocessing etc)
- Qt package with header for Linux
As Qt has different headers directory structure for different target platforms, you'll need to use the packages that are available to download for the Linux platform. The structure in those packages is the simplest and thus enabled to create the header scanner easily - if this causes many problems, we can change this to support the source packages instead.
# build metagen tool pushd lib/cpgf/tools/metagen # **download rhino from https://developer.mozilla.org/en-US/docs/Rhino/Download_Rhino and put js.jar here** wget https://github.com/downloads/mozilla/rhino/rhino1_7R4.zip unzip -j rhino1_7R4.zip '*/js.jar' cd tool bash compile.sh popd # generate binding code pushd metagen bash generate_bindings.sh <path to Qt includes> popd
While there is no install script yet, the built qtjs runner can be launched using the wrapper scripts in the tools directory.
cd tools ./qtjs
You'll see the nodejs prompt. Try typing "qt" - the screen should be filled with the Qt classes available for usage.
Try the following:
var a = new qt.QMessageBox() a.setText(new qt.QString("Hello World!")) a.show()
Or check the prepared examples:
cd examples/ ../tools/qtjs widgets.js
qtjs can by symlinked to a directory in $PATH and it will be available throughout the system.
Also, it can act as the
nodejs launcher with the compatible
npm symlinked in the same
tools directory - all node packages can be used together with the Qt bindings.
Eclipse Public License (EPL) http://www.eclipse.org/org/documents/epl-v10.php