Category:LanguageBindings: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
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™. | 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™. | ||
h2. 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+'': | 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":https://doc.qt.io/qt-5/signalsandslots.html | |||
* Queryable and designable "object properties ":https://doc.qt.io/qt-5/properties.html#qt-s-property-system | |||
* Powerful "events and events filters ":https://doc.qt.io/qt-5/eventsandfilters.html | |||
* Contextual "string translation for internationalization ":https://doc.qt.io/qt-5/i18n.html | |||
* Sophisticated interval driven "timers":https://doc.qt.io/qt-5/timers.html that make it possible to elegantly integrate many tasks in an event-driven GUI | |||
* Hierarchical and queryable "object trees":https://doc.qt.io/qt-5/objecttrees.html that organize object ownership in a natural way | |||
* "Guarded pointers":https://doc.qt.io/qt-5/qpointer.html 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 ":https://doc.qt.io/qt-5/metaobjects.html works across library boundaries. | |||
== QML Development with Qt Quick == | == QML Development with Qt Quick == | ||
Line 13: | Line 22: | ||
* JavaScript, HTML and CSS skills can be used to code complete apps | * JavaScript, HTML and CSS skills can be used to code complete apps | ||
* Optimized for touch-based, animated mobile UIs | * Optimized for touch-based, animated mobile UIs | ||
* Includes a set of graphical and behavioral building blocks: | * Includes a set of graphical and behavioral building blocks: "QML Elements ":http://doc.qt.nokia.com/4.7/qdeclarativeelements.html | ||
* No C++ knowledge required for UI creation, but can be extended with C++ | * No C++ knowledge required for UI creation, but can be extended with C++ | ||
"Find out more about Qt Quick":http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html | |||
== These are third party language bindings for Qt == | == These are third party language bindings for Qt == | ||
=== | === "PySide: Python for Qt":http://www.pyside.org (LGPL) === | ||
* [[Category:LanguageBindings::PySide|Wiki]] | * [[Category:LanguageBindings::PySide|Wiki]] | ||
Line 26: | Line 35: | ||
* [[PySideDevelopment|Development]] | * [[PySideDevelopment|Development]] | ||
* [[PySideDownloads|Downloads]] | * [[PySideDownloads|Downloads]] | ||
* | * "Mailing list":http://lists.qt.io/mailman/listinfo/pyside | ||
* | * "Source code":http://qt.gitorious.org/pyside | ||
* | * "Bug Tracker":https://bugreports.qt.io/browse/PYSIDE | ||
=== | === "PyQt":http://www.riverbankcomputing.com/news (GPL/commercial) === | ||
* | * "Tutorials":https://wiki.python.org/moin/PyQt/Tutorials | ||
* | * "API Documentation":http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html | ||
* | * "Reference Guide":http://www.riverbankcomputing.com/static/Docs/PyQt4/html/index.html | ||
* | * "Book":http://www.qtrac.eu/pyqtbook.html | ||
* | * "Whitepaper":http://www.riverbankcomputing.com/software/pyqt/whitepaper | ||
=== | === "Qt for Java":http://qt.gitorious.org/qt-jambi (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 Jambi – Qt bindings to the Java programming language – is maintained by the community. You can find more information from http://qt-jambi.org. | ||
* | * "Jambi Community":http://qt-jambi.org/ | ||
* | * "Old tutorial":http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html | ||
* | * "Old API Javadoc":http://doc.qt.digia.com/qtjambi-4.4/html/index.html | ||
=== | === "Qt for Ruby":http://techbase.kde.org/Development/Languages/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. | 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":http://www.darshancomputing.com/qt4-qtruby-tutorial/ | ||
* | * "Book":http://www.pragmaticprogrammer.com/titles/ctrubyqt/ (for Qt 3) | ||
=== | === "Qt for BASIC":http://www.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®. | 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":http://www.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. | 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. | ||
Line 68: | Line 77: | ||
=== Perl bindings === | === Perl bindings === | ||
==== | ==== "official PerlQt and PerlKDE":https://projects.kde.org/projects/kde/kdebindings/perl ==== | ||
This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the | This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the "kde-bindings list":http://lists.kde.org/?l=kde-bindings for news. | ||
This repository used to be at | This repository used to be at "Google code":http://code.google.com/p/perlqt4/, then moved to KDE in 2012. Some outdated code snapshots are on "CPAN":http://search.cpan.org/~cburel/; prefer the KDE repository. | ||
==== | ==== "Vadim Likhota bindings":http://search.cpan.org/~vadiml/ ==== | ||
One-man effort, last updated 2008. | One-man effort, last updated 2008. "opendesktop.org mirror":http://www.opendesktop.org/content/show.php/?action=content&content=69748 | ||
==== | ==== "Dongxu Ma bindings":http://search.cpan.org/~dongxu/ ==== | ||
One-man effort, last update 2012. | One-man effort, last update 2012. "GitHub mirror":https://github.com/dxma/cpan/wiki | ||
==== | ==== "PerlQt3":http://sf.net/projects/perlqt ==== | ||
Outdated, Qt3 only. | Outdated, Qt3 only. | ||
==== | ==== "PerlQt":http://search.cpan.org/dist/PerlQt/ ==== | ||
Outdated, Qt2 and Qt1 only. | Outdated, Qt2 and Qt1 only. | ||
Line 93: | Line 102: | ||
----- | ----- | ||
=== | === "Qt for C#":http://techbase.kde.org/Development/Languages/QtSharp (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":http://www.dsource.org/projects/qtd (QtD) === | ||
QtD is a binding of the Qt framework to the | QtD is a binding of the Qt framework to the "D programming language version 2.":http://www.digitalmars.com/d/2.0/index.html | ||
=== | === "Qt for Pascal":http://wiki.lazarus.freepascal.org/Qt4_binding (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 | 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":http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html | ||
=== | === "Qt for Lua":http://www.nongnu.org/libqtlua/ (QtLua) === | ||
The QtLua library are trying to make Qt4 applications scriptable using the Lua scripting language as an alternative to the QtScript module. | 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":http://qthaskell.berlios.de/ (qtHaskell) === | ||
The qtHaskell project provides a set of Haskell bindings for Qt. Haskell programmers can access the | 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":http://www.gekkou.co.uk/software/hsqml/ (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. | 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":http://kakadu.github.io/lablqt/ (lablqt) === | ||
=== | === "Qt for PHP":http://sourceforge.net/projects/php-qt/ (PHP-Qt) === | ||
=== | === "Qt for Chicken Scheme":http://wiki.call-cc.org/eggref/4/qt (Qt 4 egg) === | ||
An incomplete binding which supports loading UI files, binding to GUIs thus instantiated, and networking and dbus functionality. | An incomplete binding which supports loading UI files, binding to GUIs thus instantiated, and networking and dbus functionality. | ||
== References == | == References == |
Revision as of 08:36, 25 February 2015
h1. 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™.
h2. 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":https://doc.qt.io/qt-5/signalsandslots.html
- Queryable and designable "object properties ":https://doc.qt.io/qt-5/properties.html#qt-s-property-system
- Powerful "events and events filters ":https://doc.qt.io/qt-5/eventsandfilters.html
- Contextual "string translation for internationalization ":https://doc.qt.io/qt-5/i18n.html
- Sophisticated interval driven "timers":https://doc.qt.io/qt-5/timers.html that make it possible to elegantly integrate many tasks in an event-driven GUI
- Hierarchical and queryable "object trees":https://doc.qt.io/qt-5/objecttrees.html that organize object ownership in a natural way
- "Guarded pointers":https://doc.qt.io/qt-5/qpointer.html 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 ":https://doc.qt.io/qt-5/metaobjects.html 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 ":http://doc.qt.nokia.com/4.7/qdeclarativeelements.html
- No C++ knowledge required for UI creation, but can be extended with C++
"Find out more about Qt Quick":http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html
These are third party language bindings for Qt
"PySide: Python for Qt":http://www.pyside.org (LGPL)
- Documentation (Guides and Tutorials)
- Development
- Downloads
- "Mailing list":http://lists.qt.io/mailman/listinfo/pyside
- "Source code":http://qt.gitorious.org/pyside
- "Bug Tracker":https://bugreports.qt.io/browse/PYSIDE
"PyQt":http://www.riverbankcomputing.com/news (GPL/commercial)
- "Tutorials":https://wiki.python.org/moin/PyQt/Tutorials
- "API Documentation":http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html
- "Reference Guide":http://www.riverbankcomputing.com/static/Docs/PyQt4/html/index.html
- "Book":http://www.qtrac.eu/pyqtbook.html
- "Whitepaper":http://www.riverbankcomputing.com/software/pyqt/whitepaper
"Qt for Java":http://qt.gitorious.org/qt-jambi (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.
- "Jambi Community":http://qt-jambi.org/
- "Old tutorial":http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html
- "Old API Javadoc":http://doc.qt.digia.com/qtjambi-4.4/html/index.html
"Qt for Ruby":http://techbase.kde.org/Development/Languages/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.
- "Tutorial":http://www.darshancomputing.com/qt4-qtruby-tutorial/
- "Book":http://www.pragmaticprogrammer.com/titles/ctrubyqt/ (for Qt 3)
"Qt for BASIC":http://www.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":http://www.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":https://projects.kde.org/projects/kde/kdebindings/perl
This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the "kde-bindings list":http://lists.kde.org/?l=kde-bindings for news.
This repository used to be at "Google code":http://code.google.com/p/perlqt4/, then moved to KDE in 2012. Some outdated code snapshots are on "CPAN":http://search.cpan.org/~cburel/; prefer the KDE repository.
"Vadim Likhota bindings":http://search.cpan.org/~vadiml/
One-man effort, last updated 2008. "opendesktop.org mirror":http://www.opendesktop.org/content/show.php/?action=content&content=69748
"Dongxu Ma bindings":http://search.cpan.org/~dongxu/
One-man effort, last update 2012. "GitHub mirror":https://github.com/dxma/cpan/wiki
"PerlQt3":http://sf.net/projects/perlqt
Outdated, Qt3 only.
"PerlQt":http://search.cpan.org/dist/PerlQt/
Outdated, Qt2 and Qt1 only.
=== "Qt for C#":http://techbase.kde.org/Development/Languages/QtSharp (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":http://www.dsource.org/projects/qtd (QtD)
QtD is a binding of the Qt framework to the "D programming language version 2.":http://www.digitalmars.com/d/2.0/index.html
"Qt for Pascal":http://wiki.lazarus.freepascal.org/Qt4_binding (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":http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html
"Qt for Lua":http://www.nongnu.org/libqtlua/ (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":http://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":http://www.gekkou.co.uk/software/hsqml/ (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":http://kakadu.github.io/lablqt/ (lablqt)
"Qt for PHP":http://sourceforge.net/projects/php-qt/ (PHP-Qt)
"Qt for Chicken Scheme":http://wiki.call-cc.org/eggref/4/qt (Qt 4 egg)
An incomplete binding which supports loading UI files, binding to GUIs thus instantiated, and networking and dbus functionality.
References
This category currently contains no pages or media.