Language Bindings: Difference between revisions
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 | 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. | * 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, | * No C++ knowledge required for UI creation, while it can be extended with C++ | ||
[http://doc.qt. | [http://doc.qt.io/qt-5/qtquick-index.html Find out more about Qt Quick] | ||
== | == These are third party language bindings for Qt == | ||
=== [http://www.riverbankcomputing.com/news Qt for Python] (PyQt) === | |||
=== [http://www.riverbankcomputing.com/news | |||
* [https://wiki.python.org/moin/PyQt/Tutorials Tutorials] | * [https://wiki.python.org/moin/PyQt/Tutorials Tutorials] | ||
* [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:// | === [http://www.pyside.org Qt for Python] (PySide2) === | ||
* [[:Category:LanguageBindings::PySide|Wiki]] | |||
* [[PySideDocumentation|Documentation (Guides and Tutorials)]] | |||
* [http://qt- | * [[PySideDevelopment|Development]] | ||
* [ | * [[PySideDownloads|Downloads]] | ||
* [ | * [http://lists.qt-project.org/mailman/listinfo/pyside Mailing list] | ||
* [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 | * [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 | |||
** [https://github.com/White-Oak/qml-rust Project on Github] | |||
=== [https://github.com/flanfly/qmlrs Qt Quick for Rust] (qmlrs) === | |||
*QML bindings for the Rust language | |||
* | ** [https://github.com/flanfly/qmlrs Project on Github] | ||
* [ | |||
=== [ | === [https://github.com/therecipe/qt Qt for Go] (qt) === | ||
*Qt bindings for Go language | |||
** [https://github.com/therecipe/qt Project on Github] | |||
=== [https:// | === [https://gitlab.com/ddobrev/QtSharp 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. | |||
=== [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) === | |||
The qtah project provides a set of Haskell bindings for Qt. | |||
** [https://gitlab.com/khumba/qtah Source code and build instructions] | |||
=== [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. | ||
=== [ | === [https://github.com/Kakadu/lablqml Qt Quick for OCaml] (lablqml) === | ||
QML Bindings to OCaml. | |||
=== [ | === [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+:
- Powerful mechanism for inter-object communication called signals and slots
- Queryable and designable object properties
- Powerful events and events filters
- Contextual string translation for internationalization
- Sophisticated interval driven timers that make it possible to elegantly integrate many tasks in an event-driven GUI
- Hierarchical and queryable object trees that organize object ownership in a natural way
- 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 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, 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++
These are third party language bindings for Qt
Qt for Python (PyQt)
Qt for Python (PySide2)
- Wiki
- Documentation (Guides and Tutorials)
- Development
- Downloads
- Mailing list
- Source code
- Bug tracker
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.