- Qt 6.8
- Qt Languages
- Qt 6.8.3 Reference Documentation

# Qt Languages

The Qt API is implemented in C++, and provides additional features for easier cross-platform development. Qt supports QML, its own declarative language built on top of JavaScript, and Qt Quick, a framework built on top of QML. It is designed to describe a program's user interface: what it looks like and how it behaves. As an alternative to using C++, bindings to Qt exist for Python as Qt for Python.

## C++

The Qt framework contains a comprehensive set of highly intuitive and modularized C++ library classes and is loaded with APIs to simplify your application development. Qt provides an intuitive C++ class library with a rich set of application build blocks for C++ development and adds the following features to C++:

- A powerful mechanism for seamless object communication called signals and slots
- Queryable and designable object properties
- Powerful events and event 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
- A dynamic cast that works across library boundaries
- Support for integration of custom types into Qt metatype system

## QML

Qt Qml provides a framework for developing applications and libraries with the QML language. It defines and implements the language and engine infrastructure, and provides an API to enable and extend the QML language with custom types and integrate QML code with JavaScript and C++. The Qt QML module provides both a QML API and a C++ API.

The Qt Qml module provides the language and infrastructure for QML applications. The Qt Quick module provides many visual components, model-view support, an animation framework, and much more for building user interfaces.

The QML language allows you to define trees of objects with a JSON-like syntax. It also allows you to implement logic in JavaScript.

### JavaScript for QML Applications

JavaScript expressions allow QML code to contain application logic. Qt QML provides the framework for running JavaScript expressions in QML and from C++. It supports:

- Quick development of both user-interfaces and application logic.
- The JavaScript Host Environment provided by QML that can run valid JavaScript, as specified in the 7th edition of the standard, as well as some extensions from later standards.
- The dynamic creation of objects from within JavaScript. This is useful to delay instantiation of objects until necessary, thereby improving application startup time.

## Qt for Python

Qt for Python offers the official Python bindings for Qt, which enables you to use Python to write your Qt applications. The project has the following components:

- PySide6: The official Python bindings for Qt 6
- Shiboken6: A binding generator tool, to expose C++ code to Python
- Tooling: To make application development easier with PySide6
- Shiboken module: Provides utility functions for debugging

### Related Content

- Why Qt for Python?
- Porting Applications from PySide2 to PySide6
- Deploying PySide6 application
- Considerations
- Webinars and Talks