Category:LanguageBindings: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
Line 1: Line 1:
=Programming Language Support & Language Bindings=
h1. Programming Language Support & Language Bindings


The Qt <span class="caps">API</span> is implemented in C++, and provides additional features for easier cross-platform development. <span class="caps">QML</span> – introduced with Qt Quick is a <span class="caps">CSS</span> 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, <span class="caps">PHP</span>, 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™.
<br />h2. C''+ Development with Qt


==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+'':
<br />* Powerful mechanism for inter-object communication called &quot;signals and slots&amp;quot;:https://doc.qt.io/qt-5/signalsandslots.html<br />* Queryable and designable &quot;object properties &quot;:https://doc.qt.io/qt-5/properties.html#qt-s-property-system<br />* Powerful &quot;events and events filters &quot;:https://doc.qt.io/qt-5/eventsandfilters.html<br />* Contextual &quot;string translation for internationalization &quot;:https://doc.qt.io/qt-5/i18n.html<br />* Sophisticated interval driven &quot;timers&amp;quot;:https://doc.qt.io/qt-5/timers.html that make it possible to elegantly integrate many tasks in an event-driven GUI<br />* Hierarchical and queryable &quot;object trees&amp;quot;:https://doc.qt.io/qt-5/objecttrees.html that organize object ownership in a natural way<br />* &quot;Guarded pointers&amp;quot;: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<br />* A &quot;dynamic cast &quot;:https://doc.qt.io/qt-5/metaobjects.html works across library boundaries.


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 <span class="caps">GUI</span> development. Qt adds the following features to C++:
== QML Development with Qt Quick ==


* Powerful mechanism for inter-object communication called [https://doc.qt.io/qt-5/signalsandslots.html signals and slots] ''[qt.io]''
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.
* Queryable and designable [https://doc.qt.io/qt-5/properties.html#qt-s-property-system object properties] ''[qt.io]''
* Powerful [https://doc.qt.io/qt-5/eventsandfilters.html events and events filters] ''[qt.io]''
* Contextual [https://doc.qt.io/qt-5/i18n.html string translation for internationalization] ''[qt.io]''
* Sophisticated interval driven [https://doc.qt.io/qt-5/timers.html timers] ''[qt.io]'' that make it possible to elegantly integrate many tasks in an event-driven <span class="caps">GUI</span>
* Hierarchical and queryable [https://doc.qt.io/qt-5/objecttrees.html object trees] ''[qt.io]'' that organize object ownership in a natural way
* [https://doc.qt.io/qt-5/qpointer.html Guarded pointers] ''[qt.io]'' 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] ''[qt.io]'' works across library boundaries.


==<span class="caps">QML</span> Development with Qt Quick==
* JavaScript, HTML and CSS skills can be used to code complete apps
 
<span class="caps">QML</span> 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 <span class="caps">QML</span>, a user interface is specified as a tree of objects with properties.
 
* JavaScript, <span class="caps">HTML</span> and <span class="caps">CSS</span> 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: [http://doc.qt.nokia.com/4.7/qdeclarativeelements.html <span class="caps">QML</span> Elements] ''[doc.qt.nokia.com]''
* Includes a set of graphical and behavioral building blocks: &quot;QML Elements &quot;: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++


[http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html Find out more about Qt Quick] ''[doc.qt.nokia.com]''
&quot;Find out more about Qt Quick&amp;quot;: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 ==


===[http://www.pyside.org PySide: Python for Qt] ''[pyside.org]'' (<span class="caps">LGPL</span>)===
=== &quot;PySide: Python for Qt&amp;quot;:http://www.pyside.org (LGPL) ===


* [[:Category:LanguageBindings::PySide|Wiki]]
* [[Category:LanguageBindings::PySide|Wiki]]
* [[PySideDocumentation|Documentation (Guides and Tutorials)]]
* [[PySideDocumentation|Documentation (Guides and Tutorials)]]
* [[PySideDevelopment|Development]]
* [[PySideDevelopment|Development]]
* [[PySideDownloads|Downloads]]
* [[PySideDownloads|Downloads]]
* [http://lists.qt.io/mailman/listinfo/pyside Mailing list] ''[lists.qt.io]''
* &quot;Mailing list&amp;quot;:http://lists.qt.io/mailman/listinfo/pyside
* [http://qt.gitorious.org/pyside Source code] ''[qt.gitorious.org]''
* &quot;Source code&amp;quot;:http://qt.gitorious.org/pyside
* [https://bugreports.qt.io/browse/PYSIDE Bug Tracker] ''[bugreports.qt.io]''
* &quot;Bug Tracker&amp;quot;:https://bugreports.qt.io/browse/PYSIDE


===[http://www.riverbankcomputing.com/news PyQt] ''[riverbankcomputing.com]'' (<span class="caps">GPL</span>/commercial)===
=== &quot;PyQt&amp;quot;:http://www.riverbankcomputing.com/news (GPL/commercial) ===


* [https://wiki.python.org/moin/PyQt/Tutorials Tutorials] ''[wiki.python.org]''
* &quot;Tutorials&amp;quot;:https://wiki.python.org/moin/PyQt/Tutorials
* [http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html <span class="caps">API</span> Documentation] ''[riverbankcomputing.com]''
* &quot;API Documentation&amp;quot;:http://www.riverbankcomputing.com/static/Docs/PyQt4/html/classes.html
* [http://www.riverbankcomputing.com/static/Docs/PyQt4/html/index.html Reference Guide] ''[riverbankcomputing.com]''
* &quot;Reference Guide&amp;quot;:http://www.riverbankcomputing.com/static/Docs/PyQt4/html/index.html
* [http://www.qtrac.eu/pyqtbook.html Book] ''[qtrac.eu]''
* &quot;Book&amp;quot;:http://www.qtrac.eu/pyqtbook.html
* [http://www.riverbankcomputing.com/software/pyqt/whitepaper Whitepaper] ''[riverbankcomputing.com]''
* &quot;Whitepaper&amp;quot;:http://www.riverbankcomputing.com/software/pyqt/whitepaper


===[http://qt.gitorious.org/qt-jambi Qt for Java] ''[qt.gitorious.org]'' (QtJambi, Windows/Mac/Linux)===
=== &quot;Qt for Java&amp;quot;: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.


* [http://qt-jambi.org/ Jambi Community] ''[qt-jambi.org]''
* &quot;Jambi Community&amp;quot;:http://qt-jambi.org/
* [http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html Old tutorial] ''[doc.qt.digia.com]''
* &quot;Old tutorial&amp;quot;:http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html
* [http://doc.qt.digia.com/qtjambi-4.4/html/index.html Old <span class="caps">API</span> Javadoc] ''[doc.qt.digia.com]''
* &quot;Old API Javadoc&amp;quot;:http://doc.qt.digia.com/qtjambi-4.4/html/index.html


===[http://techbase.kde.org/Development/Languages/Ruby Qt for Ruby] ''[techbase.kde.org]'' (QtRuby)===
=== &quot;Qt for Ruby&amp;quot;:http://techbase.kde.org/Development/Languages/Ruby (QtRuby) ===


The project provides complete bindings to both the <span class="caps">KDE</span> <span class="caps">API</span> and the Qt <span class="caps">API</span>s. 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 <span class="caps">KDE</span>.
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] ''[darshancomputing.com]''
* &quot;Tutorial&amp;quot;:http://www.darshancomputing.com/qt4-qtruby-tutorial/
* [http://www.pragmaticprogrammer.com/titles/ctrubyqt/ Book] ''[pragmaticprogrammer.com]'' (for Qt 3)
* &quot;Book&amp;quot;:http://www.pragmaticprogrammer.com/titles/ctrubyqt/ (for Qt 3)


===[http://www.kbasic.com/ Qt for <span class="caps">BASIC</span>] ''[kbasic.com]'' (KBasic)===
=== &quot;Qt for BASIC&amp;quot;:http://www.kbasic.com/ (KBasic) ===


KBasic uses Qt as its toolkit to provide cross-platform abilities. KBasic is a further <span class="caps">BASIC</span> 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®.


===[http://www.qtada.com/ Qt for Ada 2005] ''[qtada.com]'' (QtAda)===
=== &quot;Qt for Ada 2005&amp;quot;: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.


* [[qtada fedora|Building QtAda on Fedora 16]]
* [[qtada_fedora | Building QtAda on Fedora 16]]
 


——
-----


===Perl bindings===
=== Perl bindings ===


====[https://projects.kde.org/projects/kde/kdebindings/perl official PerlQt and PerlKDE] ''[projects.kde.org]''====
==== &quot;official PerlQt and PerlKDE&amp;quot;:https://projects.kde.org/projects/kde/kdebindings/perl ====


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] ''[lists.kde.org]'' for news.
This is what the Linux distros ship. Expect updates for Qt5 in 2013. Subscribe to the &quot;kde-bindings list&amp;quot;:http://lists.kde.org/?l=kde-bindings for news.


This repository used to be at [http://code.google.com/p/perlqt4/ Google code] ''[code.google.com]'', then moved to <span class="caps">KDE</span> in 2012. Some outdated code snapshots are on [http://search.cpan.org/~cburel/; <span class="caps">CPAN</span>] ''[search.cpan.org]'' prefer the <span class="caps">KDE</span> repository.
This repository used to be at &quot;Google code&amp;quot;:http://code.google.com/p/perlqt4/, then moved to KDE in 2012. Some outdated code snapshots are on &quot;CPAN&amp;quot;:http://search.cpan.org/~cburel/; prefer the KDE repository.


====[http://search.cpan.org/~vadiml/ Vadim Likhota bindings] ''[search.cpan.org]''====
==== &quot;Vadim Likhota bindings&amp;quot;:http://search.cpan.org/~vadiml/ ====


One-man effort, last updated 2008. [http://www.opendesktop.org/content/show.php/?action=content&content=69748 opendesktop.org mirror] ''[opendesktop.org]''
One-man effort, last updated 2008. &quot;opendesktop.org mirror&amp;quot;:http://www.opendesktop.org/content/show.php/?action=content&amp;amp;content=69748


====[http://search.cpan.org/~dongxu/ Dongxu Ma bindings] ''[search.cpan.org]''====
==== &quot;Dongxu Ma bindings&amp;quot;:http://search.cpan.org/~dongxu/ ====


One-man effort, last update 2012. [https://github.com/dxma/cpan/wiki GitHub mirror] ''[github.com]''
One-man effort, last update 2012. &quot;GitHub mirror&amp;quot;:https://github.com/dxma/cpan/wiki


====[http://sf.net/projects/perlqt PerlQt3] ''[sf.net]''====
==== &quot;PerlQt3&amp;quot;:http://sf.net/projects/perlqt ====


Outdated, Qt3 only.
Outdated, Qt3 only.


====[http://search.cpan.org/dist/PerlQt/ PerlQt] ''[search.cpan.org]''====
==== &quot;PerlQt&amp;quot;:http://search.cpan.org/dist/PerlQt/ ====


Outdated, Qt2 and Qt1 only.
Outdated, Qt2 and Qt1 only.


——


===[http://techbase.kde.org/Development/Languages/QtSharp Qt for C#] ''[techbase.kde.org]'' (Qyoto) Qyoto makes it possible to develop Qt and <span class="caps">KDE</span> applications using C#, or any other .NET language. Qyoto uses <span class="caps">SMOKE</span>, and offers access to almost all Qt and <span class="caps">KDE</span> classes.===
-----
 
=== &quot;Qt for C#&quot;:http://techbase.kde.org/Development/Languages/QtSharp (Qyoto)<br />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] ''[dsource.org]'' (QtD)===
=== &quot;Qt for D&amp;quot;:http://www.dsource.org/projects/qtd (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.] ''[digitalmars.com]''
QtD is a binding of the Qt framework to the &quot;D programming language version 2.&quot;:http://www.digitalmars.com/d/2.0/index.html


===[http://wiki.lazarus.freepascal.org/Qt4_binding Qt for Pascal] ''[wiki.lazarus.freepascal.org]'' (<span class="caps">FPC</span> Qt4 Binding)===
=== &quot;Qt for Pascal&amp;quot;: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 <span class="caps">IDE</span> to use Qt as a Widget set. More [http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html info] ''[users.telenet.be]''
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 &quot;info&amp;quot;:http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html


===[http://www.nongnu.org/libqtlua/ Qt for Lua] ''[nongnu.org]'' (QtLua)===
=== &quot;Qt for Lua&amp;quot;: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.


===[http://qthaskell.berlios.de/ Qt for Haskell] ''[qthaskell.berlios.de]'' (qtHaskell)===
=== &quot;Qt for Haskell&amp;quot;: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 <span class="caps">ECMA</span>/Javascript engine.
 
===[http://www.gekkou.co.uk/software/hsqml/ 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 <span class="caps">QML</span> language (incorporating JavaScript) and the back-end is written in Haskell.
 
===[http://kakadu.github.io/lablqt/ Qt Quick for OCaml] ''[kakadu.github.io]'' (lablqt)===
 
===[http://sourceforge.net/projects/php-qt/ Qt for <span class="caps">PHP</span>] ''[sourceforge.net]'' (<span class="caps">PHP</span>-Qt)===
 
===[http://wiki.call-cc.org/eggref/4/qt Qt for Chicken Scheme] ''[wiki.call-cc.org]'' (Qt 4 egg)===
 
An incomplete binding which supports loading UI files, binding to <span class="caps">GUI</span>s thus instantiated, and networking and dbus functionality.
 
==References==


* Wikipedia has a comprehensive “list of language bindings for Qt”: https://en.wikipedia.org/wiki/Qt_(framework)#Programming_language_bindings
The qtHaskell project provides a set of Haskell bindings for Qt. Haskell programmers can access the &quot;Signals and Slots&amp;quot; interface logic, design interfaces using Qt Designer and write scripted applications using the Qt ECMA/Javascript engine.


===Subcategories:===
=== &quot;Qt Quick for Haskell&amp;quot;:http://www.gekkou.co.uk/software/hsqml/ (HsQML) ===


There are 6 subcategories for this category
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.


* [[:Category:LanguageBindings::PySide|PySide]]
=== &quot;Qt Quick for OCaml&amp;quot;:http://kakadu.github.io/lablqt/ (lablqt) ===


===There are 136 articles in "LanguageBindings":===
=== &quot;Qt for PHP&amp;quot;:http://sourceforge.net/projects/php-qt/ (PHP-Qt) ===


'''1'''[[:Category:LanguageBindings/P100|2]][[:Category:LanguageBindings/P100|&gt;]]===A===
=== &quot;Qt for Chicken Scheme&amp;quot;:http://wiki.call-cc.org/eggref/4/qt (Qt 4 egg) ===
* [[About-PySide|About PySide]]
* [[About-PySide-Japanese|About PySide Japanese]]
* [[Auto-generating-QObject-from-template-in-PySide|Auto generating QObject from template in PySide]]===B===
* [[Building PySide|Building_PySide]]
* [[Building PySide on Android|Building_PySide_on_Android]]
* [[Building PySide on Linux|Building_PySide_on_Linux]]
* [[Building PySide on Mac OS X|Building_PySide_on_Mac_OS_X]]
* [[Building PySide on Symbian|Building_PySide_on_Symbian]]
* [[Building PySide on Windows|Building_PySide_on_Windows]]
* [[Building Qt Jambi on Windows using MinGW|Building_Qt_Jambi_on_Windows_using_MinGW]]===C===
* [[Connecting QML Signals in PySide|Connecting_QML_Signals_in_PySide]]===D===
* [[Defining-and-using-constants-from-PySide-in-QML|Defining and using constants from PySide in QML]]
* [[Defining-and-using-constants-from-PySide-in-QML-Korean|Defining and using constants from PySide in QML Korean]]
* [[Differences Between PySide and PyQt|Differences_Between_PySide_and_PyQt]]
* [[Differences Between PySide and PyQt SimplifiedChinese|Differences_Between_PySide_and_PyQt_SimplifiedChinese]]===F===
* [[Filling-and-reading-QML-UI-forms-from-Python|Filling and reading QML UI forms from Python]]===G===
* [[Generating new bindings with PySide|Generating_new_bindings_with_PySide]]
* [[Generating PySide Reference Documentation|Generating_PySide_Reference_Documentation]]===H===
* [[Hello-World-in-PySide|Hello World in PySide]]
* [[Hello-World-in-PySide-and-QtQuick|Hello World in PySide and QtQuick]]
* [[Hello-World-in-PySide-and-QtQuick-Japanese|Hello World in PySide and QtQuick Japanese]]
* [[Hello-World-in-PySide-and-QtQuick-Korean|Hello World in PySide and QtQuick Korean]]
* [[Hello-World-in-PySide-Japanese|Hello World in PySide Japanese]]
* [[Hello-World-in-PySide-Korean|Hello World in PySide Korean]]===L===
* [[:Category:LanguageBindings|Category:LanguageBindings]]
* [[:Category:LanguageBindings::PySide|Category:LanguageBindings -&gt; PySide]]
* [[:Category:LanguageBindings::PySide::Downloads|Category:LanguageBindings -&gt; PySide -&gt; Downloads]]
* [[:Category:LanguageBindings::PySide::Newbie Tutorials|Category:LanguageBindings -&gt; PySide -&gt; Newbie_Tutorials]]
* [[:Category:LanguageBindings::PySideJapanese|Category:LanguageBindings -&gt; PySideJapanese]]
* [[:Category:LanguageBindings::PySide FAQ Japanese|Category:LanguageBindings -&gt; PySide_FAQ_Japanese]]===M===
* [[Multi-selection-lists-in-Python-with-QML|Multi selection lists in Python with QML]]===P===
* [[Packaging PySide applications on Windows|Packaging_PySide_applications_on_Windows]]
* [[PySide-and-QML-Playground|PySide and QML Playground]]
* [[PySide-Internationalization-Japanese|PySide Internationalization Japanese]]
* [[PySide-Newbie-Tutorials|PySide Newbie Tutorials]]
* [[PySide-Newbie-Tutorials-Japanese|PySide Newbie Tutorials Japanese]]
* [[PySide-Pitfalls-Japanese|PySide Pitfalls Japanese]]
* [[PySide-QtQuick-Tutorials|PySide QtQuick Tutorials]]
* [[PySide-Tutorials-by-Experience-Level|PySide Tutorials by Experience Level]]
* [[PySide-Tutorials-by-Experience-Level-Japanese|PySide Tutorials by Experience Level Japanese]]
* [[PySide-Tutorials-by-Experience-Level-Korean|PySide Tutorials by Experience Level Korean]]
* [[PySideContributors]]
* [[PySideDevelopment]]
* [[PySideDocumentation]]
* [[PySideDocumentationJapanese]]
* [[PySideDownloadsJapanese]]
* [[PySideSimplicissimus Module 1 Prerequisites|PySideSimplicissimus_Module_1_Prerequisites]]
* [[PySideSimplicissimus Module 2 CloseButton|PySideSimplicissimus_Module_2_CloseButton]]
* [[PySideSimplicissimus Module 2 CloseButton Japanese|PySideSimplicissimus_Module_2_CloseButton_Japanese]]
* [[PySideSimplicissimus Module 3 AboutBox|PySideSimplicissimus_Module_3_AboutBox]]
* [[PySideSimplicissimus Module 3 AboutBox Japanese|PySideSimplicissimus_Module_3_AboutBox_Japanese]]
* [[PySideSimplicissimus Module 4 ShowLicence|PySideSimplicissimus_Module_4_ShowLicence]]
* [[PySideSimplicissimus Module 4 ShowLicence Japanese|PySideSimplicissimus_Module_4_ShowLicence_Japanese]]
* [[PySideSimplicissimus Module 5 Combine|PySideSimplicissimus_Module_5_Combine]]
* [[PySideSimplicissimus Module 5 Combine Japanese|PySideSimplicissimus_Module_5_Combine_Japanese]]
* [[PySideSimplicissimus Module 6 AlternativeCombine|PySideSimplicissimus_Module_6_AlternativeCombine]]
* [[PySideSimplicissimus Module 6 AlternativeCombine Japanese|PySideSimplicissimus_Module_6_AlternativeCombine_Japanese]]
* [[PySideSimplicissimus Module 7 CombineAllIn1|PySideSimplicissimus_Module_7_CombineAllIn1]]
* [[PySideSimplicissimus Module 7 CombineAllIn1 Japanese|PySideSimplicissimus_Module_7_CombineAllIn1_Japanese]]
* [[PySideTutorials Clickable button|PySideTutorials_Clickable_button]]
* [[PySideTutorials Clickable button Japanese|PySideTutorials_Clickable_button_Japanese]]
* [[PySideTutorials Simple Dialog|PySideTutorials_Simple_Dialog]]
* [[PySideTutorials Simple Dialog Japanese|PySideTutorials_Simple_Dialog_Japanese]]
* [[PySide API Extractor|PySide_API_Extractor]]
* [[PySide Archives|PySide_Archives]]
* [[PySide Based Apps|PySide_Based_Apps]]
* [[PySide Binaries Linux|PySide_Binaries_Linux]]
* [[PySide Binaries MacOSX|PySide_Binaries_MacOSX]]
* [[PySide Binaries Maemo|PySide_Binaries_Maemo]]
* [[PySide Binaries MeeGo|PySide_Binaries_MeeGo]]
* [[PySide Binaries Windows|PySide_Binaries_Windows]]
* [[PySide Binding Generation Tutorial|PySide_Binding_Generation_Tutorial]]
* [[PySide Binding Generation Tutorial: Module 1 Creating the foo library|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_2_Binding_libfoo_using_Shiboken]]
* [[PySide Binding Generation Tutorial: Module 3 Creating Type System Description|PySide_Binding_Generation_Tutorial:_Module_3_Creating_Type_System_Description]]
* [[PySide Binding Generation Tutorial: Module 4 The Global Header|PySide_Binding_Generation_Tutorial:_Module_4_The_Global_Header]]
* [[PySide Binding Generation Tutorial: Module 5 Building the generator|PySide_Binding_Generation_Tutorial:_Module_5_Building_the_generator]]
* [[PySide Binding Generator|PySide_Binding_Generator]]
* [[PySide Bits Pieces|PySide_Bits_Pieces]]
* [[PySide CMake Primer|PySide_CMake_Primer]]
* [[PySide DBus Integration|PySide_DBus_Integration]]
* [[PySide Development Getting Started|PySide_Development_Getting_Started]]
* [[PySide Engineering Application|PySide_Engineering_Application]]
* [[PySide Error Management|PySide_Error_Management]]
* [[PySide Examples|PySide_Examples]]
* [[PySide Example Applications|PySide_Example_Applications]]
* [[PySide FAQ|PySide_FAQ]]
* [[PySide for Android guide|PySide_for_Android_guide]]
* [[PySide Generating New Bindings|PySide_Generating_New_Bindings]]
* [[PySide GSoc Ideas|PySide_GSoc_Ideas]]
* [[PySide Hungarian|PySide_Hungarian]]
* [[PySide Internationalization|PySide_Internationalization]]
* [[PySide Logo|PySide_Logo]]
* [[PySide Pitfalls|PySide_Pitfalls]]
* [[PySide Presentations|PySide_Presentations]]
* [[PySide Python 3 Issues|PySide_Python_3_Issues]]
* [[PySide Python 3 Support|PySide_Python_3_Support]]
* [[PySide QML Tutorial Advanced 1|PySide_QML_Tutorial_Advanced_1]]
* [[PySide QML Tutorial Advanced 2|PySide_QML_Tutorial_Advanced_2]]
* [[PySide QML Tutorial Advanced 3|PySide_QML_Tutorial_Advanced_3]]'''1'''[[:Category:LanguageBindings/P100|2]][[:Category:LanguageBindings/P100|&gt;]]


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


* [[:Category:LanguageBindings|LanguageBindings]]
== References ==
** [[:Category:LanguageBindings::PySide|PySide]]

Revision as of 14:12, 23 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&quot;: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&quot;: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&quot;:https://doc.qt.io/qt-5/objecttrees.html that organize object ownership in a natural way
* "Guarded pointers&quot;: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&quot;:http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html

These are third party language bindings for Qt

"PySide: Python for Qt&quot;:http://www.pyside.org (LGPL)

"PyQt&quot;:http://www.riverbankcomputing.com/news (GPL/commercial)

"Qt for Java&quot;: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 for Ruby&quot;: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.

"Qt for BASIC&quot;: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&quot;: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&quot;: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&quot;:http://lists.kde.org/?l=kde-bindings for news.

This repository used to be at "Google code&quot;:http://code.google.com/p/perlqt4/, then moved to KDE in 2012. Some outdated code snapshots are on "CPAN&quot;:http://search.cpan.org/~cburel/; prefer the KDE repository.

"Vadim Likhota bindings&quot;:http://search.cpan.org/~vadiml/

One-man effort, last updated 2008. "opendesktop.org mirror&quot;:http://www.opendesktop.org/content/show.php/?action=content&amp;content=69748

"Dongxu Ma bindings&quot;:http://search.cpan.org/~dongxu/

One-man effort, last update 2012. "GitHub mirror&quot;:https://github.com/dxma/cpan/wiki

"PerlQt3&quot;:http://sf.net/projects/perlqt

Outdated, Qt3 only.

"PerlQt&quot;: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&quot;: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&quot;: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&quot;:http://users.telenet.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html

"Qt for Lua&quot;: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&quot;:http://qthaskell.berlios.de/ (qtHaskell)

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

"Qt Quick for Haskell&quot;: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&quot;:http://kakadu.github.io/lablqt/ (lablqt)

"Qt for PHP&quot;:http://sourceforge.net/projects/php-qt/ (PHP-Qt)

"Qt for Chicken Scheme&quot;: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.