Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Language Bindings: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
m (Removed superfluous "These are")
(Major update (acutally done by ShalokShalom))
Line 3: Line 3:
== Programming Language Support & 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™.
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 Python, Ring, Go, Rust, PHP, and Java™.


== C++ Development with Qt ==
== C++ Development with Qt ==
Line 20: Line 21:
== QML Development with Qt Quick ==
== 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.
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, like in JSON.


* 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: [http://doc.qt.nokia.com/4.7/qdeclarativeelements.html QML Elements]
* Includes a set of graphical and behavioral building blocks: [http://doc.qt.io/qt-5/qmltypes.html QML Types]
* No C++ knowledge required for UI creation, but can be extended with C++
* No C++ knowledge required for UI creation, while it can be extended with C++


[http://doc.qt.nokia.com/4.7/qdeclarativeintroduction.html Find out more about Qt Quick]
[http://doc.qt.io/qt-5/qtquick-index.html Find out more about Qt Quick]


== Third party language bindings for Qt ==
== These are third party language bindings for Qt ==


=== [http://www.pyside.org PySide: Python for Qt] (LGPL) ===
=== [http://www.riverbankcomputing.com/news Qt for Python] (PyQt) ===
 
* [[: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]
* [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/index.html Reference Guide (PyQt5)]
* [http://pyqt.sourceforge.net/Docs/PyQt5/class_reference.html API Documentation (PyQt5)]
* [http://pyqt.sourceforge.net/Docs/PyQt5/class_reference.html API Documentation (PyQt5)]
Line 51: Line 40:
* [http://www.riverbankcomputing.com/software/pyqt/whitepaper Whitepaper]
* [http://www.riverbankcomputing.com/software/pyqt/whitepaper Whitepaper]


=== [http://qt.gitorious.org/qt-jambi Qt for Java] (QtJambi, Windows/Mac/Linux) ===
=== [http://www.pyside.org Qt for Python] (PySide2) ===


Qt Jambi – Qt bindings to the Java programming language – is maintained by the community. You can find more information from http://qt-jambi.org.
* [[:Category:LanguageBindings::PySide|Wiki]]
 
* [[PySideDocumentation|Documentation (Guides and Tutorials)]]
* [http://qt-jambi.org/ Jambi Community]
* [[PySideDevelopment|Development]]
* [http://doc.qt.digia.com/qtjambi-4.4/html/com/trolltech/qt/qtjambi-tutorial.html Old tutorial]
* [[PySideDownloads|Downloads]]
* [http://doc.qt.digia.com/qtjambi-4.4/html/index.html Old API Javadoc]
* [http://lists.qt-project.org/mailman/listinfo/pyside Mailing list]
* [[Building Qt Jambi on Windows using MinGW]]
* [https://github.com/pyside/pyside2-setup Source code]
* [https://bugreports.qt.io/browse/PYSIDE Bug tracker]


=== [http://ring-lang.sourceforge.net/doc/qt.html Qt for Ring] (RingQt) ===
=== [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.]
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.
Ring uses Qt as its toolkit to provide cross-platform abilities.


=== [https://github.com/rust-qt Qt for Rust] (Rust-Qt) ===
=== [https://github.com/rust-qt Qt for Rust] (Rust-Qt) ===


Qt bindings for Rust language
Qt bindings for the Rust language


* [https://github.com/rust-qt Project on github]
* [https://github.com/rust-qt Project on Github]  


=== [https://github.com/White-Oak/qml-rust Qt Quick for Rust] (qml-rust) ===
*QML bindings for the Rust language


=== [http://techbase.kde.org/Development/Languages/Ruby Qt for Ruby] (QtRuby) ===
** [https://github.com/White-Oak/qml-rust Project on Github]  


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.
=== [https://github.com/flanfly/qmlrs Qt Quick for Rust] (qmlrs) ===
*QML bindings for the Rust language


* [http://www.darshancomputing.com/qt4-qtruby-tutorial/ Tutorial]
** [https://github.com/flanfly/qmlrs Project on Github]
* [http://www.pragmaticprogrammer.com/titles/ctrubyqt/ Book] (for Qt 3)


=== [http://www.kbasic.com/ Qt for BASIC] (KBasic) ===
=== [https://github.com/therecipe/qt Qt for Go] (qt) ===
*Qt bindings for Go language


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®.
** [https://github.com/therecipe/qt Project on Github]


=== [https://web-beta.archive.org/web/20161007212818/qtada.com Qt for Ada 2005] (QtAda) ===
=== [https://gitlab.com/ddobrev/QtSharp Qt for C#/Mono/.Net] (QtSharp) ===


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.
This project aims to create Mono/.NET libraries that wrap Qt thus enabling its usage through C#. It relies on the excellent CppSharp.


* [[Qtada fedora| Building QtAda on Fedora 16]]
=== [https://github.com/MGWL/QtE5 Qt for D] (QtD) ===


QtE5 is a binding of the Qt framework to the [https://dlang.org/ D programming language version 2.]


-----
=== [http://khumba.net/projects/qtah/ Qt for Haskell] (qtHaskell) ===


=== Perl bindings ===
The qtah project provides a set of Haskell bindings for Qt.


==== [https://projects.kde.org/projects/kde/kdebindings/perl official PerlQt and PerlKDE] ====
** [https://gitlab.com/khumba/qtah Source code and build instructions]
 
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) ===
=== [http://www.gekkou.co.uk/software/hsqml/ Qt Quick for Haskell] (HsQML) ===
Line 142: Line 95:
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.


=== [http://kakadu.github.io/lablqt/ Qt Quick for OCaml] (lablqt) ===
=== [https://github.com/Kakadu/lablqml Qt Quick for OCaml] (lablqml) ===
 
=== [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.
QML Bindings to OCaml.  


=== [http://cfsghost.github.io/brig/ Qt Quick for Node.js] (Brig) ===
=== [https://github.com/BrigJS/brig Qt Quick for Node.js] (Brig) ===
The Brig project provides library for Qt Quick framework, making it possible to write graphical applications in JavaScript and QML languages.
The Brig project provides library for Qt Quick framework, making it possible to write graphical applications in JavaScript and QML languages.

Revision as of 13:19, 12 July 2017

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

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 Python, Ring, Go, Rust, PHP, 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+:

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, like in JSON.

  • 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 Types
  • No C++ knowledge required for UI creation, while it can be extended with C++

Find out more about Qt Quick

These are third party language bindings for Qt

Qt for Python (PyQt)

Qt for Python (PySide2)

Qt for Ring (RingQt)

RingQt is a binding of the Qt framework to the Ring programming language.

Ring uses Qt as its toolkit to provide cross-platform abilities.

Qt for Rust (Rust-Qt)

Qt bindings for the Rust language

Qt Quick for Rust (qml-rust)

  • QML bindings for the Rust language

Qt Quick for Rust (qmlrs)

  • QML bindings for the Rust language

Qt for Go (qt)

  • Qt bindings for Go language

Qt for C#/Mono/.Net (QtSharp)

This project aims to create Mono/.NET libraries that wrap Qt thus enabling its usage through C#. It relies on the excellent CppSharp.

Qt for D (QtD)

QtE5 is a binding of the Qt framework to the D programming language version 2.

Qt for Haskell (qtHaskell)

The qtah project provides a set of Haskell bindings for Qt.

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.

Qt Quick for OCaml (lablqml)

QML Bindings to OCaml.

Qt Quick for Node.js (Brig)

The Brig project provides library for Qt Quick framework, making it possible to write graphical applications in JavaScript and QML languages.