Programming Language Support & Language Bindings

The Qt API is implemented in C++, and provides additional features for easier cross-platform development. QML – introduced with Qt Quick is a CSS and JavaScript-like declarative, language designed to describe the user interface of a program: both what it looks like, and how it behaves. Bindings to Qt exist for several other languages, including Ada, Pascal, Perl, PHP, Ruby, Python and Java™.

C++ Development with Qt

Qt provides an intuitive C++ class library with a rich set of application build blocks for C++ development. Qt goes beyond C++ in the areas of inter-object communication and flexibility for advanced GUI development. Qt adds the following features to C++:

  • Powerful mechanism for inter-object communication called signals and slots [doc.qt.nokia.com]
  • Queryable and designable object properties [doc.qt.nokia.com]
  • Powerful events and events filters [doc.qt.nokia.com]
  • Contextual string translation for internationalization [doc.qt.nokia.com]
  • Sophisticated interval driven timers [doc.qt.nokia.com] that make it possible to elegantly integrate many tasks in an event-driven GUI
  • Hierarchical and queryable object trees [doc.qt.nokia.com] that organize object ownership in a natural way
  • Guarded pointers [doc.qt.nokia.com] that are automatically set to 0 when the referenced object is destroyed, unlike normal C++ pointers which become dangling pointers when their objects are destroyed
  • A dynamic cast [doc.qt.nokia.com] works across library boundaries.

QML Development with Qt Quick

QML is a declarative, JavaScript-based language designed to describe the user interface of a program: both what it looks like, and how it behaves. In QML, a user interface is specified as a tree of objects with properties.

  • JavaScript, HTML and CSS skills can be used to code complete apps
  • Optimized for touch-based, animated mobile UIs
  • Includes a set of graphical and behavioral building blocks: QML Elements [doc.qt.nokia.com]
  • No C++ knowledge required for UI creation, but can be extended with C++

Find out more about Qt Quick [doc.qt.nokia.com]

These are third party language bindings for Qt

PySide: Python for Qt [pyside.org] (LGPL)

PyQt [riverbankcomputing.com] (GPL/commercial)

Qt for Java [qt.gitorious.org] (QtJambi, Windows/Mac/Linux)

Qt Jambi – Qt bindings to the Java programming language – is maintained by the community. You can find more information from http://qt-jambi.org.

Qt for Ruby [techbase.kde.org] (QtRuby)

The project provides complete bindings to both the KDE API and the Qt APIs. The Korundum package includes both a QtRuby Qt-only binding along with the full combined Qt/KDE one. The QtRuby package contains just Qt bindings with no dependencies on KDE.

  • Tutorial [darshancomputing.com]
  • Book [pragmaticprogrammer.com] (for Qt 3)

Qt for BASIC [kbasic.com] (KBasic)

KBasic uses Qt as its toolkit to provide cross-platform abilities. KBasic is a further BASIC dialect and is related to VB.NET™, Visual Basic®, Visual Basic for Application® and Java™. It combines several features and includes built-in backward support for QBasic®.

Qt for Ada 2005 [qtada.com] (QtAda)

QtAda is an Ada2005 language prividing bindings to the Qt libraries and a set of useful tools. QtAda supports Qt version 4.6 and later.

——

Perl bindings

official PerlQt and PerlKDE [projects.kde.org]

This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the kde-bindings list [lists.kde.org] for news.

This repository used to be at Google code [code.google.com], then moved to KDE in 2012. Some outdated code snapshots are on CPAN [search.cpan.org] prefer the KDE repository.

Vadim Likhota bindings [search.cpan.org]

One-man effort, last updated 2008. opendesktop.org mirror [opendesktop.org]

Dongxu Ma bindings [search.cpan.org]

One-man effort, last update 2012. GitHub mirror [github.com]

PerlQt3 [sf.net]

Outdated, Qt3 only.

PerlQt [search.cpan.org]

Outdated, Qt2 and Qt1 only.

——

Qt for C# [techbase.kde.org] (Qyoto) Qyoto makes it possible to develop Qt and KDE applications using C#, or any other .NET language. Qyoto uses SMOKE, and offers access to almost all Qt and KDE classes.

Qt for D [dsource.org] (QtD)

QtD is a binding of the Qt framework to the D programming language version 2. [digitalmars.com]

Qt for Pascal [wiki.lazarus.freepascal.org] (FPC Qt4 Binding)

The Free Pascal Qt4 binding allows Free Pascal to interface with the C++ Library Qt. This binding does not cover the whole Qt4 framework but only the classes needed by the Cross Platform Lazarus IDE to use Qt as a Widget set. More info [users.telenet.be]

Qt for Lua [nongnu.org] (QtLua)

The QtLua library are trying to make Qt4 applications scriptable using the Lua scripting language as an alternative to the QtScript module.

Qt for Haskell [qthaskell.berlios.de] (qtHaskell)

The qtHaskell project provides a set of Haskell bindings for Qt. Haskell programmers can access the “Signals and Slots” interface logic, design interfaces using Qt Designer and write scripted applications using the Qt ECMA/Javascript engine.

Qt Quick for Haskell [gekkou.co.uk] (HsQML)

HsQML provides a Haskell binding to the Qt Quick framework. It allows you to write graphical applications where the front-end is written in Qt Quick’s QML language (incorporating JavaScript) and the back-end is written in Haskell.

Qt Quick for OCaml [kakadu.github.io] (lablqt)

Qt for PHP [sourceforge.net] (PHP-Qt)

Qt for Chicken Scheme [wiki.call-cc.org] (Qt 4 egg)

An incomplete binding which supports loading UI files, binding to GUIs thus instantiated, and networking and dbus functionality.

References

Subcategories:

There are 6 subcategories for this category

There are 136 articles in "LanguageBindings":

Categories: