Qt Reference Documentation

# Qt Features Overview

This document provides a summary of the most important features of Qt, providing links to other pages in the documentation that cover these features in more detail. It is not intended to be a comprehensive guide to Qt's features.

## Fundamental Technologies in Qt

Qt is built upon a set of core technologies, provided by the QtCore and QtGui modules. These include the following:

- The Tulip Container Classes, a set of template container classes.
- The Arthur Paint System, the Qt 4 painting framework.
- The Interview Framework, a model/view architecture for item views and the QtSQL Module, which also uses this architecture.
- The Scribe Classes, a framework for creating text documents, performing low-level text layout and writing OpenDocument files.
- A collection of common desktop widgets, styled to fit in on each supported platform.
- The Qt 4 Main Window Classes, a main window, toolbar, menu, and docking architecture.
- The Graphics View framework provides a canvas for producing interactive graphics.
- The QtNetwork Module provides support for TCP, UDP and local sockets that are integrated with Qt's event model, including support for Secure Socket Layer (SSL) communications, network proxy servers and network bearer management.
- Enhanced thread support allows signal-slot connections across threads and per-thread event loops. Additionally, a framework for concurrent programming using Qt paradigms makes common threading tasks easier.
- A resource system for embedding images and other resource files into executable files makes it easier to deploy applications.
- A unit testing framework for Qt applications and libraries.

The mature classes provided by these technologies have been used to build robust, cross-platform desktop applications. They are augmented by a number of additional technologies and improvements that have appeared over the lifetime of Qt 4.

## Graphical User Interfaces

Alongside the support for traditional desktop user interfaces, Qt includes support for declarative UI development with Qt Quick, a set of technologies for creating fluid, dynamic user interfaces. A starting point for exploring this approach can be found in the Introduction to Qt Quick guide.

Qt provides a range of standard user interface elements, called widgets, for each supported platform. Widgets can be used as containers for other widgets, as windows, and as regular controls that the user interacts with. Where the platform supports it, widgets can be made to appear partially transparent, and may be styled with Qt Style Sheets.

Support for touch input and gestures enable widgets to be used to create intuitive user interfaces for touch-enabled devices.

User interfaces can also be created dynamically at run-time with the features provided by the QtUiTools module.

A selection of available widgets are shown in the Qt Widget Gallery. An introduction to the concepts behind widgets can be found in the Widgets Tutorial.

## Painting, Printing and Rendering

Widgets are just one of many kinds of paint device that Qt can render onto. This support for unified painting makes it possible for applications to use the same painting code for different tasks, as well as allowing Qt to be extended to support additional file formats.

Qt provides support for common bitmap image formats, Scalable Vector Graphics (SVG) drawings and animations, Postscript and Portable Document Format (PDF) files. Postscript and PDF are integrated with Qt's printing system, which also allows printed output to be previewed.

Interactive graphics can be created with the animation framework, allowing animations to be used with both widgets and graphics items. Animations can be used with the state machine framework, which provides a way to express application logic and integrate it with the user interface. Animations can be enhanced with a collection of graphics effects that operate on graphics items and can be applied individually or combined to create more complex effects.

Qt supports integration with OpenGL on a number of levels, providing convenience functions for handling textures and colors, as well as providing support for pixel and sample buffers. Future support for higher level 3D integration is provided by Qt3D enablers which include matrix multiplication, quaternions, and an API for vertex and fragment shaders.

Two APIs are provided for multimedia. The Phonon Multimedia Framework has traditionally been used on desktop platforms. A set of multimedia services provides low-level access to the system's audio system and is often used on mobile devices.

## Infrastructure

Facilities for Inter-Process Communication (IPC) and Remote Procedure Calling (RPC) mechanisms are available on platforms that support the D-Bus message bus system.

An Undo framework based on the Command pattern is designed to enable a consistent approach to handling data in editing applications.

The QtScript and QtScriptTools modules provide support for application scripting and debugging using the ECMAScript language.

The QtHelp Module provides the foundations of an interactive help system that can be used in conjunction with Qt Creator or integrated into applications directly.

XML handling is supported in a number of places in Qt. The QtCore module provides classes for reading and writing XML streams. The QtXmlPatterns module includes XQuery, XPath and XSLT support, providing facilities for XML processing beyond that supported by the QtXml module, which contains SAX and DOM parsers. XML schema validation in the QtXmlPatterns module covers large parts of version 1.0 of the specification.

## Web Client Integration

Integration between Qt and WebKit makes it possible for developers to use a fully-featured Web browser engine to display documents and access online services. Developers can access the browser's environment to create documents and run scripts within one or more browser widgets.

A DOM access API for QtWebKit provides a cleaner and safer way to access elements and structures of Web pages without the use of JavaScript.

## Further Reading

Many of the technologies mentioned here, as well as other, more specific features, are listed in the What's New in Qt 4 document. A complete list of Qt's modules can be found on the All Modules page, which also includes more domain-specific technologies.

The tools that are supplied with Qt are covered by the listing in the Qt's Tools document.