|
|
| (One intermediate revision by one other user not shown) |
| Line 1: |
Line 1: |
| {{LangSwitch}}
| | #REDIRECT [[Language Bindings]] |
| | |
| == 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 [https://doc.qt.io/qt-5/signalsandslots.html signals and slots]
| |
| * Queryable and designable [https://doc.qt.io/qt-5/properties.html#qt-s-property-system object properties ]
| |
| * Powerful [https://doc.qt.io/qt-5/eventsandfilters.html events and events filters ]
| |
| * Contextual [https://doc.qt.io/qt-5/i18n.html string translation for internationalization ]
| |
| * Sophisticated interval driven [https://doc.qt.io/qt-5/timers.html timers] that make it possible to elegantly integrate many tasks in an event-driven GUI
| |
| * Hierarchical and queryable [https://doc.qt.io/qt-5/objecttrees.html object trees] that organize object ownership in a natural way
| |
| * [https://doc.qt.io/qt-5/qpointer.html Guarded pointers] 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 [https://doc.qt.io/qt-5/metaobjects.html dynamic cast ] 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: [http://doc.qt.nokia.com/4.7/qdeclarativeelements.html QML Elements ]
| |
| * No C++ knowledge required for UI creation, but can be extended with C++
| |
| | |
| [http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html Find out more about Qt Quick]
| |
| | |
| == These are third party language bindings for Qt ==
| |
| | |
| === [http://www.pyside.org PySide: Python for Qt] (LGPL) ===
| |
| | |
| * [[:Category:LanguageBindings::PySide|Wiki]]
| |
| * [[PySideDocumentation|Documentation (Guides and Tutorials)]]
| |
| * [[PySideDevelopment|Development]]
| |
| * [[PySideDownloads|Downloads]]
| |
| * [http://lists.qt-project.org/mailman/listinfo/pyside Mailing list]
| |
| * [http://code.qt.io/cgit/?q=pyside Source code]
| |
| * [https://bugreports.qt.io/browse/PYSIDE Bug tracker]
| |
| | |
| === [http://www.riverbankcomputing.com/news PyQt] (GPL 3/commercial) ===
| |
| | |
| * [https://wiki.python.org/moin/PyQt/Tutorials Tutorials]
| |
| * [http://pyqt.sourceforge.net/Docs/PyQt4/ Reference Guide (PyQt4)]
| |
| * [http://pyqt.sourceforge.net/Docs/PyQt4/classes.html API Documentation (PyQt4)]
| |
| * [http://pyqt.sourceforge.net/Docs/PyQt5/index.html Reference Guide (PyQt5)]
| |
| * [http://pyqt.sourceforge.net/Docs/PyQt5/class_reference.html API Documentation (PyQt5)]
| |
| * [http://www.qtrac.eu/pyqtbook.html Book]
| |
| * [http://www.riverbankcomputing.com/software/pyqt/whitepaper Whitepaper]
| |
| | |
| === [http://qt.gitorious.org/qt-jambi Qt for Java] (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.
| |
| | |
| * [http://qt-jambi.org/ Jambi Community]
| |
| * [http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html Old tutorial]
| |
| * [http://doc.qt.digia.com/qtjambi-4.4/html/index.html Old API Javadoc]
| |
| | |
| === [http://ring-lang.sourceforge.net/doc/qt.html Qt for Ring] (RingQt) ===
| |
| | |
| RingQt is a binding of the Qt framework to the [http://ring-lang.net/ Ring programming language.]
| |
| Ring uses Qt as its toolkit to provide cross-platform abilities.
| |
| | |
| === [http://techbase.kde.org/Development/Languages/Ruby Qt for Ruby] (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.
| |
| | |
| * [http://www.darshancomputing.com/qt4-qtruby-tutorial/ Tutorial]
| |
| * [http://www.pragmaticprogrammer.com/titles/ctrubyqt/ Book] (for Qt 3)
| |
| | |
| === [http://www.kbasic.com/ Qt for BASIC] (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®.
| |
| | |
| === [http://www.qtada.com/ Qt for Ada 2005] (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.
| |
| | |
| * [[qtada_fedora | Building QtAda on Fedora 16]]
| |
| | |
| | |
| -----
| |
| | |
| === Perl bindings ===
| |
| | |
| ==== [https://projects.kde.org/projects/kde/kdebindings/perl official PerlQt and PerlKDE] ====
| |
| | |
| This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the [http://lists.kde.org/?l=kde-bindings kde-bindings list] for news.
| |
| | |
| This repository used to be at [http://code.google.com/p/perlqt4/ Google code], then moved to KDE in 2012. Some outdated code snapshots are on [http://search.cpan.org/~cburel/; CPAN] prefer the KDE repository.
| |
| | |
| ==== [http://search.cpan.org/~vadiml/ Vadim Likhota bindings] ====
| |
| | |
| One-man effort, last updated 2008. [http://www.opendesktop.org/content/show.php/?action=content&content=69748 opendesktop.org mirror]
| |
| | |
| ==== [http://search.cpan.org/~dongxu/ Dongxu Ma bindings] ====
| |
| | |
| One-man effort, last update 2012. [https://github.com/dxma/cpan/wiki GitHub mirror]
| |
| | |
| ==== [http://sf.net/projects/perlqt PerlQt3] ====
| |
| | |
| Outdated, Qt3 only.
| |
| | |
| ==== [http://search.cpan.org/dist/PerlQt/ PerlQt] ====
| |
| | |
| Outdated, Qt2 and Qt1 only.
| |
| | |
| | |
| -----
| |
| | |
| === [http://techbase.kde.org/Development/Languages/QtSharp Qt for C#] (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. ===
| |
| | |
| === [http://www.dsource.org/projects/qtd Qt for D] (QtD) ===
| |
| | |
| QtD is a binding of the Qt framework to the [http://www.digitalmars.com/d/2.0/index.html D programming language version 2.]
| |
| | |
| === [http://wiki.lazarus.freepascal.org/Qt4_binding Qt for Pascal] (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 [http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html info]
| |
| | |
| === [http://www.nongnu.org/libqtlua/ Qt for Lua] (QtLua) ===
| |
| | |
| The QtLua library are trying to make Qt4 applications scriptable using the Lua scripting language as an alternative to the QtScript module.
| |
| | |
| === [http://qthaskell.berlios.de/ Qt for Haskell] (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.
| |
| | |
| === [http://www.gekkou.co.uk/software/hsqml/ Qt Quick for Haskell] (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.
| |
| | |
| === [http://kakadu.github.io/lablqt/ Qt Quick for OCaml] (lablqt) ===
| |
| | |
| === [http://sourceforge.net/projects/php-qt/ Qt for PHP] (PHP-Qt) ===
| |
| | |
| === [http://wiki.call-cc.org/eggref/4/qt Qt for Chicken Scheme] (Qt 4 egg) ===
| |
| | |
| An incomplete binding which supports loading UI files, binding to GUIs thus instantiated, and networking and dbus functionality.
| |
| | |
| == References ==
| |