diff options
Diffstat (limited to 'src/gui/doc/src/qtgui.qdoc')
-rw-r--r-- | src/gui/doc/src/qtgui.qdoc | 201 |
1 files changed, 48 insertions, 153 deletions
diff --git a/src/gui/doc/src/qtgui.qdoc b/src/gui/doc/src/qtgui.qdoc index efa4295a41..2a1d69d4d3 100644 --- a/src/gui/doc/src/qtgui.qdoc +++ b/src/gui/doc/src/qtgui.qdoc @@ -1,29 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \module QtGui @@ -39,26 +15,46 @@ */ /*! + \module QtGuiPrivate + \title Qt GUI Private C++ Classes + \qtcmakepackage Gui + \qtvariable gui-private + + \brief Provides access to private GUI functionality. + + Use the following CMake commands in your \c {CMakeLists.txt} to access + private Qt GUI APIs: + + \badcode + find_package(Qt6 REQUIRED COMPONENTS Gui) + target_link_libraries(mytarget PRIVATE Qt6::GuiPrivate) + \endcode +*/ + +/*! \page qtgui-index.html \title Qt GUI The Qt GUI module provides classes for windowing system integration, event handling, OpenGL and OpenGL ES integration, 2D - graphics, basic imaging, fonts and text. These classes are used - internally by Qt's user interface technologies and can also be - used directly, for instance to write applications using low-level + graphics, basic imaging, fonts, and text. These classes are used + internally by Qt's user interface technologies but can also be + used directly, for example to write applications using low-level OpenGL ES graphics APIs. For application developers writing user interfaces, Qt provides - higher level API's, like Qt Quick, that are much more suitable + higher level APIs, like Qt Quick, that are much more suitable than the enablers found in the Qt GUI module. \if !defined(qtforpython) - \include module-use.qdocinc using qt module - \quotefile overview/using-qt-gui.cmake + \section1 Using the Module + + \include {module-use.qdocinc} {using the c++ api} - See also the \l {Build with CMake} overview. + \section2 Building with CMake + + \include {module-use.qdocinc} {building with cmake} {Gui} \section2 Building with qmake @@ -68,125 +64,34 @@ \snippet code/doc_src_qtgui.pro 1 \endif - \section1 Application Windows - - The most important classes in the Qt GUI module are - QGuiApplication and QWindow. A Qt application that wants to show - content on screen, will need to make use of these. QGuiApplication - contains the main event loop, where all events from the window - system and other sources are processed and dispatched. It also - handles the application's initialization and finalization. - - The \l QWindow class represents a window in the underlying - windowing system. It provides a number of virtual functions to - handle events (\l {QEvent}) from the windowing system, such as - touch-input, exposure, focus, key strokes and geometry changes. - - - - \section1 2D Graphics - - The Qt GUI module contains classes for 2D graphics, imaging, fonts - and advanced typography. - - A \l QWindow created with the surface type \l - {QSurface::RasterSurface} can be used in combination with \l - {QBackingStore} and \l {QPainter}, Qt's highly optimized 2D vector - graphics API. QPainter supports drawing lines, polygons, vector - paths, images and text. For more information, see \l{Paint - System} and \l {Raster Window Example}. - - Qt can load and save images using the \l QImage and \l QPixmap - classes. By default, Qt supports the most common image formats - including JPEG and PNG among others. Users can add support for - additional formats via the \l QImageIOPlugin class. For more - information, see \l {Reading and Writing Image Files} - - Typography in Qt is done with \l QTextDocument which uses the \l - QPainter API in combination with Qt's font classes, primarily - QFont. Applications that prefer more low-level APIs to text - and font handling, classes like QRawFont and QGlyphRun can be - used. - - \section1 OpenGL and OpenGL ES Integration - - QWindow supports rendering using OpenGL and OpenGL ES, depending - on what the platform supports. OpenGL rendering is enabled by - setting the QWindow's surface type to QSurface::OpenGLSurface, - choosing the format attributes with QSurfaceFormat, and then - creating a QOpenGLContext to manage the native OpenGL context. In - addition, Qt has QOpenGLPaintDevice, which enables the use of - OpenGL accelerated QPainter rendering, as well as convenience - classes that simplify the writing of OpenGL code and hides the - complexities of extension handling and the differences between - OpenGL ES 2 and desktop OpenGL. The convenience classes include - QOpenGLFunctions that lets an application use all the OpenGL ES 2 - functions on desktop OpenGL without having to manually resolve the - OpenGL function pointers, thus allowing cross-platform development - of applications targeting mobile or embedded devices, and some - classes that wrap native OpenGL functionality in a simpler Qt API: + \section1 Articles and Guides \list - \li QOpenGLBuffer - \li QOpenGLFramebufferObject - \li QOpenGLShaderProgram - \li QOpenGLTexture - \li QOpenGLDebugLogger - \li QOpenGLTimerQuery - \li QOpenGLVertexArrayObject + \li \l {Qt GUI Overview} + \list + \li \l {Application Windows} {Qt GUI Application Windows} + \li \l {2D Graphics} {Qt GUI 2D Graphics} + \li \l {RHI Graphics} {Qt GUI Accelerated 2D and 3D Graphics using the Qt RHI} + \li \l {3D Matrix and Vector Math} {Qt GUI Matrix and Vector Math} + \li \l {OpenGL and OpenGL ES Integration} + {Qt GUI OpenGL and OpenGL ES Integration} + \li \l {Vulkan Integration} {Qt GUI Vulkan Integration} + \endlist \endlist - Finally, in order to provide better support for the newer versions - (3.0 and higher) of OpenGL, a versioned function wrapper mechanism - is also available: The QOpenGLFunction_N_N family of classes - expose all the functions in a given OpenGL version and profile, - allowing easy development of desktop applications relying on - modern, desktop-only OpenGL features. - - For more information, see the \l {OpenGL Window Example}. - - The Qt GUI module also contains a few math classes to aid with the - most common mathmatical operations related to 3D graphics. These - classes include \l {QMatrix4x4}, \l {QVector4D} and \l {QQuaternion} - - A \l {QWindow} created with the \l {QSurface::OpenGLSurface} can - be used in combination with \l QPainter and \l QOpenGLPaintDevice - to have OpenGL hardware accelerated 2D graphics, by sacrificing - some of the visual quality. - - - - \section1 Vulkan Integration - - Qt GUI has support for the \l {Vulkan} API. Qt applications require the - presence of the \l{LunarG Vulkan SDK}. - - On Windows, the SDK sets the environment variable \c {VULKAN_SDK}, - which will be detected by the \c {configure} script. - - On Android, Vulkan headers were added in API level 24 of the NDK. - - Relevant classes: + \section1 Reference \list - \li QVulkanDeviceFunctions - \li QVulkanExtension - \li QVulkanFunctions - \li QVulkanInfoVector - \li QVulkanInstance - \li QVulkanWindow - \li QVulkanWindowRenderer + \li \l{Qt GUI C++ Classes} + \list + \li \l{Event Classes} + \li \l{Painting Classes} + \li \l{Rendering in 3D} + \endlist \endlist - For more information, see the \l{Hello Vulkan Widget Example} - and the \l {Hello Vulkan Window Example}. - - \section1 Drag and Drop - - Qt GUI includes support for drag and drop. The \l{Drag and Drop} overview - has more information. - \section1 Module Evolution + \l{Changes to Qt GUI} lists important changes in the module API and functionality that were done for the Qt 6 series of Qt. @@ -202,14 +107,4 @@ modules under following permissive licenses: \generatelist{groupsbymodule attributions-qtgui} - - \section1 Reference - \list - \li \l{Qt GUI C++ Classes} - \list - \li \l{Event Classes} - \li \l{Painting Classes} - \li \l{Rendering in 3D} - \endlist - \endlist */ |