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)
- Wiki
- Documentation (tutorials, examples, API reference)
- Downloads
- Mailing list [lists.pyside.org]
- Bugzilla [bugs.pyside.org]
- Source code [qt.gitorious.org]
PyQt [riverbankcomputing.com] (GPL/commercial)
- Tutorials [diotavelli.net]
- API Documentation [riverbankcomputing.com]
- Reference Guide [riverbankcomputing.com]
- Book [qtrac.eu]
- Whitepaper [riverbankcomputing.com]
Qt for Java [qt.gitorious.org] (QtJambi, Windows/Mac/Linux)
Qt Jambi – Qt bindings to the Java programming language – has been discontinued in order to focus resources on the Qt cross platform application and UI framework. Qt Jambi is available for download under the LGPL v2.1 license at http://qt.nokia.com/downloads. [qtsoftware.com]
- Jambi Community [qt-jambi.org]
- Old tutorial [doc.trolltech.com]
- Old API Javadoc [doc.trolltech.com]
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.
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.
Qt for Perl [opendesktop.org] (Perl Qt4)
The goal of this project is to maintain a Perl Object Oriented interface to the Qt GUI Toolkit. Last project update was in 2003.
Qt for Perl [search.cpan.org]
A Qt Perl binding, last update in 2011.
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 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
- Wikipedia has a comprehensive list of language bindings for Qt [en.wikipedia.org])#Bindings
Subcategories:
There are 3 subcategories for this categoryThere are 84 articles in "LanguageBindings":
- Auto generating_QObject_from_template_in_PySide
- Building_PySide
- Building_PySide_on_Android
- Building_PySide_on_Linux
- Building_PySide_on_Mac_OS_X
- Building_PySide_on_Symbian
- Building_PySide_on_Windows
- Building_Qt_Jambi_on_Windows_using_MinGW
- Connecting_QML_Signals_in_PySide
- Defining_and_using_constants_from_PySide_in_QML
- Differences_Between_PySide_and_PyQt
- Differences_Between_PySide_and_PyQt_SimplifiedChinese
- Filling_and_reading_QML_UI_forms_from_Python
- Generating_new_bindings_with_PySide
- Generating_PySide_Reference_Documentation
- Hello_World_in_PySide
- Hello_World_in_PySide_and_QtQuick
- Hello_World_in_PySide_and_QtQuick_Korean
- Hello_World_in_PySide_Korean
- Category:LanguageBindings
- Category:LanguageBindings -> PySide -> Downloads
- Category:LanguageBindings -> PySide -> Newbie_Tutorials
- Multi selection_lists_in_Python_with_QML
- Packaging_PySide_applications_on_Windows
- PySide
- PySideContributors
- PySideDocumentation
- PySideDownloads
- PySideSimplicissimus_Module_1_Prerequisites
- PySideSimplicissimus_Module_2_CloseButton
- PySideSimplicissimus_Module_3_AboutBox
- PySideSimplicissimus_Module_4_ShowLicence
- PySideSimplicissimus_Module_5_Combine
- PySideSimplicissimus_Module_6_AlternativeCombine
- PySideSimplicissimus_Module_7_CombineAllIn1
- PySideTutorials_Clickable_button
- PySideTutorials_Simple_Dialog
- PySide_and_QML_Playground
- PySide_API_Extractor
- PySide_Based_Apps
- PySide_Binaries_Linux
- PySide_Binaries_MacOSX
- PySide_Binaries_Maemo
- PySide_Binaries_MeeGo
- PySide_Binaries_Windows
- PySide_Binding_Generation_Tutorial
- PySide_Binding_Generation_Tutorial:_Module_1_Creating_the_foo_library
- PySide_Binding_Generation_Tutorial:_Module_2_Binding_libfoo_using_Shiboken
- PySide_Binding_Generation_Tutorial:_Module_3_Creating_Type_System_Description
- PySide_Binding_Generation_Tutorial:_Module_4_The_Global_Header
- PySide_Binding_Generation_Tutorial:_Module_5_Building_the_generator
- PySide_Binding_Generator
- PySide_Bits_Pieces
- PySide_CMake_Primer
- PySide_DBus_Integration
- PySide_Engineering_Application
- PySide_Error_Management
- PySide_Examples
- PySide_FAQ
- PySide_Generating_New_Bindings
- PySide_GSoc_Ideas
- PySide_Hungarian
- PySide_Internationalization
- PySide_Logo
- PySide_Newbie_Tutorials
- PySide_Pitfalls
- PySide_Python_3_Issues
- PySide_Python_3_Support
- PySide_QtQuick_Tutorials
- PySide_Spanish
- PySide_Tutorials_by_Experience_Level
- Python_Debugging_Tips
- Qt_Jambi
- Selectable_list_of_Python_objects_in_QML
- Setting_up_PySide
- Setting_up_PySide_Korean
- Signals_and_Slots_in_PySide
- Tu_primer_aplicacion_en_PySide
- Updating_QML_content_from_Python_threads
- Using_QtMobility_sensors_and_QML_from_PySide
- Using_QtWebKit_and_QML_with_PySide
- Using_Qt_Properties_in_PySide
- Using_Qt_Properties_in_PySide_Korean
- Utilizing_Qt_Quick_Colibri_in_PySide

