Qt 6.3 的新功能
Qt 6.3 中的新模块和还原模块
Qt 6.3 adds the following module:
-
Qt Language Server: implements the
语言服务器协议规范
和
JsonRpc 2.0
protocol. The module does not contain a public API.
Qt 6.3 reintroduces the following modules that were not present in Qt 6.2. All listed modules were ported to Qt 6 and the CMake build system.
A more detailed list of changes to each module can be found in
Qt 6 中的 Qt 模块变化
.
Qt 6.3 中的新特征
Qt Core 模块
-
添加
QtFuture::whenAll
() 和
QtFuture::whenAny
() functions for combining multiple futures.
-
添加
QDir::mkdir
() 和
QFile::open
() overloads accepting a permission argument.
-
QMetaType
can now convert any
QFuture
<T> 到
QFuture
<void>.
-
添加
QDirIterator::nextFileInfo
(), to advance and get full file information.
-
QLocale
's mappings of language codes to and from Language values now have overloads specifying which ISO 639 code types to consider.
-
QRegularExpressionMatch
现在拥有
hasCaptured
() methods to test whether a given group was captured at all.
-
QProcessEnvironment
gained a new enum and constructor that allows you to choose whether the process environment shall be inherited from the parent process when a respective
QProcess
is launched.
警告:
In older Qt versions, the default behavior was to inherit, although the documentation said it won't. Qt 6.3 changes the behavior of the default constructor to actually match the documentation. That is, launching a
QProcess
采用
QProcessEnvironment
created by
QProcessEnvironment
() will be launched in an empty environment. Use
QProcessEnvironment
(
QProcessEnvironment::InheritFromParent
) to revert to the old behavior.
Also, added method
inheritsFromParent
() to test for an instance constructed the new way.
-
QVarLengthArray
现在拥有
emplace
() 和
emplace_back
() 方法。
-
Time formats used by
QLocale
,
QTime
and
QDateTime
's parsing and serialization now recognize 'aP' and 'Ap' format specifiers to obtain an AM/PM indicator, using the locale-appropriate case for the indicator, where previously the author of a time format had to pick a case that might conflict with the user's locale. For
QTime
and
QDateTime
the locale is always C, whose indicators are uppercase. For
QLocale
, the case will now match that of amText() or pmText(). Previously, 'aP' would have been read as a lower-case indicator followed by a 'P' and 'Ap' as an upper-case indicator followed by a 'p'. The 'P' or 'p' will now be treated as part of the format specifier: if the prior behavior is desired, either use 'APp' or 'apP' as format specifier or quote the 'p' or 'P' in the format. The prior 'a', 'ap', 'A' and 'AP' specifiers are otherwise unaffected.
-
QDebug
can now stream
QVarLengthArray
对象。
-
QObject::findChildren
() now has an overload taking no name.
-
Added overloads and method names to
QSemaphore
for greater compatibility with std::counting_semaphore and std::chrono.
-
QJsonValue
now has rvalue constructors taking
QJsonArray
and
QJsonObject
.
-
QCborMap::fromJsonObject
() 和
QCborArray::fromJsonArray
() now have rvalue overloads.
-
添加
QByteArrayView::trimmed
() to elide leading and trailing space.
-
Added number-parsing methods to
QByteArrayView
.
-
Added isValidUtf8() methods to
QByteArray
,
QByteArrayView
,和
QUtf8StringView
.
-
添加
QCryptographicHash::resultView
() to provide a view over
result
().
-
QStringBuilder now supports
QByteArrayView
.
-
QUuid
can now be constructed from
QAnyStringView
.
-
QLocale
now has a constructor taking a
QStringView
.
-
QByteArrayList::join
() now has an overload taking
QByteArrayView
.
-
QCryptographicHash::addData
() now has an overload taking
QByteArrayView
.
-
qSwap
() is now constexpr.
-
添加新的公共 CMake API:
Qt GUI 模块
Qt Quick 模块
-
添加的新项:
TreeView
.
-
所有
pointer handlers
have settable
parent
特性。
-
HoverHandler
and
WheelHandler
have a
blocking
property to control whether the hover and wheel events respectively propagate to items and handlers behind the handler's
parent
.
-
TapHandler
now has one more
gesturePolicy
值:
DragWithinBounds
; it is similar to
WithinBounds
, except that even if the user drags while holding the point pressed,
timeHeld
is not reset during dragging, and the
longPressed
signal is emitted regardless of the drag threshold, if the user holds it that long. This is useful for implementing press-drag-release components such as menus (like the pie menu in the pointer handlers example) while using
timeHeld
to directly drive an "opening" animation.
-
QQuickItem::clipRect
() now provides the region visible in the
viewport
(the parent
Flickable
or
Window
), and can be used to limit scene graph node vertices as an optimization in custom items, at the cost of having
updatePaintNode
() called more often. See docs about the new
QQuickItem::ItemObservesViewport
and
QQuickItem::ItemIsViewport
flags.
-
To save memory and startup time,
文本
and
TextEdit
now avoid generating scene graph nodes for large portions of text that are invisible because of falling outside the viewport (
Flickable
or
Window
).
-
文本
now renders horizontal rules from HTML or Markdown.
-
在
文本
, horizontal rules and underline/overline/strikethrough lines can be colored by CSS rules included in HTML source.
import QtQuick
Text {
textFormat: Text.RichText
wrapMode: Text.WordWrap
width: 440
font.pointSize: 12
text: `<p><u style="color: green;">green with underline</u>
<span style="text-decoration: underline; text-decoration-color: green;">
green underline</span></p>
<p><s style="background-color: lightgrey;">plain strikethrough</s>
<span style="text-decoration: line-through; text-decoration-color: orange;">
orange strikethrough</span></p>
<p><span style="text-decoration: overline;">plain overline</span>
<span style="text-decoration: overline; text-decoration-color: red;">
red overline</span></p>`
}
-
QQuickItem::dumpItemTree
() has been added; it can be called from C++ (similar to
QObject::dumpObjectTree
()) or from QML, to show the
qDebug
-operator output for an item and all its children, indented to show the tree structure.
-
TapHandler
tapped
,
singleTapped
and
doubleTapped
signals now have two arguments: the
QEventPoint
instance, and the
button
being tapped. If you need a signal handler, you should write an explicit function to receive those arguments:
onTapped: function(point, button) { ... }
onDoubleTapped: (point, button)=> ...
-
DragHandler
activeTranslation
now holds the amount of movement since the drag gesture began.
persistentTranslation
holds the accumulated sum of movement that has occurred during subsequent drag gestures, and can be reset to arbitrary values between gestures.
Qt Quick Controls 模块
Qt Quick Dialogs 模块
-
添加
FolderDialog
and
MessageDialog
. These are native dialogs on platforms that support it, and non-native Qt Quick dialogs on other platforms.
The non-native dialogs support all of the non-native styles: Basic, Fusion, Imagine, Material and Universal.
-
QToolBar
now supports scrolling with a kinetic wheel or track pad.
Several new
QStyle
enum values are available to allow styles to customize additional look and feel aspects of a widget-based UI:
Qt Network 模块
-
QNetworkInformation
learned transportMedium. A property that returns the transport medium of the primary network interface.
-
QNetworkInformation
also learned isMetered. A property that returns whether the network is metered.
Qt QML 模块
-
Added tech preview QML type compiler (
qmltc
) that compiles QML type structure to C++.
-
Added several new warnings to qmllint which now uses compiler infrastructure.
-
The header only qmlintegration module allows to mark types for registration in a QML module, without adding a dependency to qtdeclarative. Those can then be added to a QML module via the new
qt_generate_foreign_qml_types()
CMake API.
-
qmlcachegen compiles suitable functions and expressions to C++ now, for improved performance.
-
添加新的公共 CMake API:
Qt Quick 3D 模块
-
添加
ReflectionProbe
, making it possible for models to show reflections.
-
Particles3D: New
ParticleCustomShape3D
element which loads emitting shapes from custom CBOR binary files.
-
Particles3D: Sprite particles now have support for the 3D environment lights.
-
Particles3D: New
DynamicBurst
element for declarative dynamic emitting and for emitting at trail start/end times.
-
添加
ResourceLoader
component for explicit setting of resource lifetimes (in Technical Preview)
-
PrincipledMaterial
: Added support for ClearCoat, Transmission, and Refraction.
-
glTF2: Importers now support the following additional extensions: KHR_materials_clearcoat, KHR_materials_ior, KHR_materials_transmission, KHR_materials_volume
Qt WebEngine 模块
-
现在采用 Python 3 而不是 Python 2 进行构建
-
Added API for replacing QML touch selection menu
-
添加新的公共 CMake API:
Qt Data Visualization 模块
Qt Positioning 模块
-
New
DirectionAccuracy
attribute is added for Android and iOS platforms. It represents the accuracy of the provided bearing.
Qt Bluetooth 模块
-
Extended the Windows implementation of
QBluetoothLocalDevice
. It reports the adapter state correctly, and allows to toggle its state. Support for connected/disconnected devices tracking is still missing.
-
Extended
QBluetoothDeviceInfo
API to expose Bluetooth Low Energy service data as published during the advertisement.
Qt Wayland Compositor 模块
-
Added an API to create custom shell extensions. For instructions on usage, see
the example
.
-
添加
Qt Shell
which supports all windowing system features available in Qt.
-
添加支持
presentation-time
协议。
-
Added support for multiple input method protocols in the same server, in order to support clients from different sources.
WebAssembly
Several improvements have been made for Qt for WebAssembly. See the platform documentation at
Qt for WebAssembly
了解细节。
-
Added support for copy/paste of images and html text to the system clipboard.
-
Added SIMD support. Note that enabling SIMD requires building Qt from source.
-
添加支持调用
QEventLoop::exec
() 和
QThread::exec
() 在辅助线程中。
-
添加支持调用
QEventLoop::exec
() 和
QDialog::exec
() on the main thread using
Emscripten Asyncify
. Note that enabling asyncify requires building Qt from source.
-
Drag-and-drop now works for asyncify-enabled builds.
-
Added support for tunneling TCP and UDP sockets over WebSockets, using Emscriptens
Emulated POSIX TCP Sockets over WebSockets
. This support is limited to async sockets on the main thread.
ARM 中的 Windows
Windows on ARM64 remains in Technology Preview as problems with optimized builds of Qt could not be resolved yet.
Android
-
The
在 APP 中购买演示
and Qt 3D: Planets QML Example had android specific improvements.
-
Updated Gradle to 7.2.0 and the Android Gradle Plugin (AGP) to 7.0.2 (requires JDK 11 or above).
-
Added missing _make_aab target for CMake Android projects.
-
Added multi-ABI build for CMake, see
QT_ANDROID_ABIS
.
-
QML modules are now staged to a common directory named "android-qml" under the user's build folder. This acts as a common import path for
The androiddeployqt Tool
.
-
The QML Test Bench now works for Android builds.
iOS
-
CMake-based projects now generate a default launch screen.
Boot to Qt
-
Boot to Qt 堆栈已更新为使用 Yocto 3.4 (honister)。
-
Qt PDF and Qt Language Server were included in Boot to Qt stack.
其它
Wayland
-
实现支持
DataDeviceV3
协议。
-
Upgraded
wl_seat
support to version 7.
-
Added support for selecting input method protocol, if the server supports multiple interfaces. This can be done by setting QT_WAYLAND_TEXT_INPUT_PROTOCOL to the name of the protocol.
API 变化列表
These pages contain an overview of API changes in Qt 6.3:
Additions to All Qt 6 Releases