summaryrefslogtreecommitdiffstats
path: root/src/gui/doc/src/qt6-changes.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/doc/src/qt6-changes.qdoc')
-rw-r--r--src/gui/doc/src/qt6-changes.qdoc151
1 files changed, 151 insertions, 0 deletions
diff --git a/src/gui/doc/src/qt6-changes.qdoc b/src/gui/doc/src/qt6-changes.qdoc
new file mode 100644
index 0000000000..60e1bffba8
--- /dev/null
+++ b/src/gui/doc/src/qt6-changes.qdoc
@@ -0,0 +1,151 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
+
+/*!
+ \page gui-changes-qt6.html
+ \title Changes to Qt GUI
+ \ingroup changes-qt-5-to-6
+ \brief Kernel, Text, Painting, and Utility classes are modified.
+
+ Qt 6 is a result of the conscious effort to make the framework more
+ efficient and easy to use.
+
+ We try to maintain binary and source compatibility for all the public
+ APIs in each release. But some changes were inevitable in an effort to
+ make Qt a better framework.
+
+ In this topic we summarize those changes in Qt GUI, and provide
+ guidance to handle them.
+
+ \section1 Kernel classes
+
+ \section2 The QBitmap class
+
+ Implicit construction of a QBitmap from a QPixmap is no longer supported.
+ The constructor and assignment operator have been made explicit and marked as
+ deprecated. Use the new static factory function \l{QBitmap::}{fromPixmap} instead.
+
+ \section2 The QCursor class
+
+ Implicit construction of a QCursor from a QPixmap is no longer supported, the
+ constructor has been made explicit.
+
+ \section2 The QKeyCombination class
+
+ QKeyCombination is a new class for storing a combination of a key with an
+ optional modifier. It should be used as a replacement for combining values from
+ the Qt::Key enum with a modifier in a type-safe way.
+
+ We recommend migrating code that currently uses operator+() to combine a key and
+ modifiers, as future C++ standards are likely to declare arithmetic operations
+ between unrelated enumeration types as illegal. Use operator|(), and change
+ APIs that expect an \c int to expect a QKeyCombination instead.
+
+ Existing APIs that expect an \c int for a key combination can be called using
+ QKeyCombination::toCombined().
+
+ \section1 Text classes
+
+ \section2 The QFontDatabase class
+
+ The QFontDatabase class has now only static member functions. The constructor
+ has been deprecated. Instead of e.g.
+
+ \code
+ const QStringList fontFamilies = QFontDatabase().families();
+ \endcode
+
+ use
+
+ \code
+ const QStringList fontFamilies = QFontDatabase::families();
+ \endcode
+
+ \section2 The QFont class
+
+ The numerical values of the QFont::Weight enumerator have been changed to
+ be in line with OpenType weight values. QFont::setWeight() expects an enum value
+ instead of an \c int, and code that calls the setter with an integer will fail to
+ compile. To continue to use old integer values, use QFont::setLegacyWeight().
+
+ \section1 Painting classes
+
+ See the porting guide for \l{Changes to Qt Print Support}{Qt Print Support} for
+ information about \l{QPagedPaintDevice} and other printing related classes.
+
+ \section1 Utility classes
+
+ \section2 QIntValidator and QDoubleValidator
+
+ The \l{QIntValidator::}{setRange()} method is no longer marked as virtual.
+
+ \section1 OpenGL classes
+
+ With the introduction of Qt RHI as the rendering foundation in Qt,
+ most classes prefixed by \c QOpenGL have been moved into the \l{Qt OpenGL}
+ module.
+
+ More details can be found in \l{Changes to Qt OpenGL}{the Qt OpenGL porting guide}.
+
+ One notable exception is the class \l QOpenGLContext, which still resides in
+ Qt GUI.
+
+ In addition, the class \l QOpenGLWidget has been moved to a new module, named
+ Qt OpenGL Widgets.
+
+ \section2 The QOpenGLContext class
+
+ The QOpenGLContext::versionFunctions() function is replaced by
+ QOpenGLVersionFunctionsFactory::get(). QOpenGLVersionFunctionsFactory is a public
+ class now, part of the \l{Qt OpenGL} module.
+
+ \section2 ANGLE
+
+ On Windows, ANGLE, a third-party OpenGL ES to Direct 3D translator, is no
+ longer included in Qt. This means Qt::AA_UseOpenGLES and the environment
+ variable \c{QT_OPENGL=angle} no longer have any effect.
+ In \l{Dynamically Loading OpenGL}{dynamic OpenGL builds} there is no automatic fallback to ANGLE in
+ case OpenGL proper fails to initialize. For QWindow or QWidget based
+ applications using OpenGL directly, for example via QOpenGLWidget, this means
+ that OpenGL proper is the only option at run time. However, the alternative of
+ using a pure software OpenGL implementation, such as Mesa llvmpipe that is
+ shipped with the pre-built Qt packages, is still available. For Qt Quick and Qt
+ Quick 3D applications, Qt 6 introduces support for Direct 3D 11, Vulkan, and
+ Metal, in addition to OpenGL. On Windows the default choice is Direct 3D,
+ therefore the removal of ANGLE is alleviated by having support for graphics
+ APIs other than OpenGL as well.
+
+ \section2 Native clipboard integration
+
+ Qt 5 provided interfaces for integrating platform specific or custom
+ clipboard formats into Qt through \c QMacPasteboardMime in \c QtMacExtras,
+ and \c QWindowsMime from the Windows QPA API. Since Qt 6.6, the
+ equivalent functionality is provided by the classes QUtiMimeConverter for
+ \macos, and the QWindowsMimeConverter for Windows.
+
+ Porting from QWindowsMime to QWindowsMimeConverter requires practically no
+ changes, as the virtual interface is identical. However, in Qt 6 it is no
+ longer needed to register a QWindowsMimeConverter implementation;
+ instantiating the type implicitly registers the converter.
+
+ Porting a QMacPasteboardMime to QUtiMimeConverter requires renaming some of
+ the virtual functions. Note that the \c{QMacPasteboardMime} API used the
+ outdated term \c{flavor} for the native clipboard format on \macos, whereas
+ the platform now uses \c{Uniform Type Identifiers}, i.e. \c{UTI}s, which Qt
+ has adapted for function and parameter names.
+
+ The \c{mimeFor} and \c{flavorFor} functions are replaced by the
+ \l{QUtiMimeConverter::}{mimeForUti} and \l{QUtiMimeConverter::}{utiForMime}
+ implementations, respectively. Those should return the name of the mime
+ type or \c{UTI} that the converter can convert the input format to, so a
+ port usually just involves renaming existing overrides. The
+ \c{convertToMime}, \c{convertFromMime}, and \c{count} functions in
+ QUtiMimeConverter are identical to their QMacPasteboardMime versions.
+
+ The \c{canConvert}, \c{converterName} functions are no longer needed, they
+ are implied by implementation of the above functions, so overrides of those
+ functions can be removed.
+
+ As with the the QWindowsMimeConverter, registration is done by instantiating
+ the type.
+*/