New Classes and Functions in Qt 6.4 | Qt 6.12
Description: A list of new APIs in Qt 6.4.

- Qt 6.12
- New Classes and Functions in Qt 6.4
- Qt 6.12.0 Reference Documentation

# New Classes and Functions in Qt 6.4

This page contains a comprehensive list of all new classes and functions introduced in Qt 6.4.

- New Classes
- New Member Functions
- New Functions in Namespaces
- New Macros
- New Enum Types
- New Enum Values
- New Properties
- New Variables
- New QML Types
- New QML Properties
- New QML Methods

### New Classes

A
  QAbstractHttpServer

H
  QHttpServer
  QHttpServerRequest
  QHttpServerResponder
  QHttpServerResponse
  QHttpServerRouter
  QHttpServerRouterRule

P
  QPdfLink
  QPdfPageNavigator

S
  QSslServer

W
  QWebEngineFileSystemAccessRequest
  QWebSocketHandshakeOptions

### New Member Functions

Class QAbstractItemModelTester:

`(since 6.4)` void | setUseFetchMore(bool value)

Class QByteArray:

`(since 6.4)` QByteArray | operator""_ba(const char *str, size_t size)
`(since 6.4)` QByteArray | percentDecoded(char percent = '%') const &
`(since 6.4)` void | resize(qsizetype newSize, char c)

Class QColor:

`(since 6.4)` QColor | fromString(QAnyStringView name)
`(since 6.4)` bool | isValidColorName(QAnyStringView name)

Class QColorTransform:

`(since 6.4)` bool | isIdentity() const
`(since 6.4)` QRgbaFloat16 | map(QRgbaFloat16 rgbafp16) const
`(since 6.4)` QRgbaFloat32 | map(QRgbaFloat32 rgbafp32) const
`(since 6.4)` bool | operator!=(const QColorTransform &ct1, const QColorTransform &ct2)
`(since 6.4)` bool | operator==(const QColorTransform &ct1, const QColorTransform &ct2)

Class QDate:

`(since 6.4)` QDate | addDuration(std::chrono::days ndays) const
`(since 6.4)` QDate | fromStdSysDays(const std::chrono::sys_days &days)

Class QDateTime:

`(since 6.4)` QDateTime | addDuration(std::chrono::milliseconds msecs) const
`(since 6.4)` QDateTime | fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)
`(since 6.4)` QDateTime | fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)
`(since 6.4)` QDateTime | fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)
`(since 6.4)` QDateTime | fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)
`(since 6.4)` QDateTime | fromStdZonedTime(const int &time)
`(since 6.4)` QDateTime | operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)
`(since 6.4)` QDateTime | operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)
`(since 6.4)` QDateTime & | operator+=(std::chrono::milliseconds duration)
`(since 6.4)` std::chrono::milliseconds | operator-(const QDateTime &lhs, const QDateTime &rhs)
`(since 6.4)` QDateTime | operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)
`(since 6.4)` QDateTime & | operator-=(std::chrono::milliseconds duration)
`(since 6.4)` std::chrono::sys_time<std::chrono::milliseconds> | toStdSysMilliseconds() const
`(since 6.4)` std::chrono::sys_seconds | toStdSysSeconds() const

Class QFileInfo:

`(since 6.4)` bool | isAlias() const

Class QFormLayout:

`(since 6.4)` bool | isRowVisible(int row) const
`(since 6.4)` bool | isRowVisible(QLayout *layout) const
`(since 6.4)` bool | isRowVisible(QWidget *widget) const
`(since 6.4)` void | setRowVisible(int row, bool on)
`(since 6.4)` void | setRowVisible(QLayout *layout, bool on)
`(since 6.4)` void | setRowVisible(QWidget *widget, bool on)

Class QFuture:

`(since 6.4)` QFuture<U> | unwrap()

Class QHash:

`(since 6.4)` auto | asKeyValueRange() &&
`(since 6.4)` auto | asKeyValueRange() &
`(since 6.4)` auto | asKeyValueRange() const &&
`(since 6.4)` auto | asKeyValueRange() const &

Class QImage:

`(since 6.4)` QImage | colorTransformed(const QColorTransform &transform) const &
`(since 6.4)` QImage | colorTransformed(const QColorTransform &transform) &&

Class QJniEnvironment:

`(since 6.4)` jfieldID | findField(jclass clazz, const char *fieldName)
`(since 6.4)` jmethodID | findMethod(jclass clazz, const char *methodName)
`(since 6.4)` jfieldID | findStaticField(jclass clazz, const char *fieldName)
`(since 6.4)` jmethodID | findStaticMethod(jclass clazz, const char *methodName)

Class QJniObject:

`(since 6.4)` auto | callMethod(const char *methodName, Args &&... args) const
`(since 6.4)` auto | callMethod(const char *methodName, const char *signature, Args &&... args) const
`(since 6.4)` QJniObject | callObjectMethod(const char *methodName, Args &&... args) const
`(since 6.4)` auto | callStaticMethod(const char *className, const char *methodName, Args &&... args)
`(since 6.4)` auto | callStaticMethod(jclass clazz, const char *methodName, Args &&... args)
`(since 6.4)` auto | callStaticMethod(jclass clazz, jmethodID methodId, Args &&... args)
`(since 6.4)` auto | callStaticMethod(const char *className, const char *methodName, const char *signature, Args &&... args)
`(since 6.4)` QJniObject | callStaticObjectMethod(const char *className, const char *methodName, Args &&... args)
`(since 6.4)` QJniObject | callStaticObjectMethod(jclass clazz, const char *methodName, Args &&... args)
`(since 6.4)` auto | construct(Args &&... args)

Class QLatin1Char:

`(since 6.4)` QLatin1Char | operator""_L1(char ch)

Class QLatin1StringView:

`(since 6.4)` const char * | constBegin() const
`(since 6.4)` const char * | constData() const
`(since 6.4)` const char * | constEnd() const
`(since 6.4)` qsizetype | count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
`(since 6.4)` qsizetype | count(QLatin1StringView l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
`(since 6.4)` qsizetype | count(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
`(since 6.4)` bool | empty() const
`(since 6.4)` QLatin1Char | first() const
`(since 6.4)` QLatin1Char | last() const
`(since 6.4)` qsizetype | length() const
`(since 6.4)` QLatin1StringView | operator""_L1(const char *str, size_t size)
`(since 6.4)` double | toDouble(bool *ok = nullptr) const
`(since 6.4)` float | toFloat(bool *ok = nullptr) const
`(since 6.4)` int | toInt(bool *ok = nullptr, int base = 10) const
`(since 6.4)` long | toLong(bool *ok = nullptr, int base = 10) const
`(since 6.4)` qlonglong | toLongLong(bool *ok = nullptr, int base = 10) const
`(since 6.4)` short | toShort(bool *ok = nullptr, int base = 10) const
`(since 6.4)` uint | toUInt(bool *ok = nullptr, int base = 10) const
`(since 6.4)` ulong | toULong(bool *ok = nullptr, int base = 10) const
`(since 6.4)` qulonglong | toULongLong(bool *ok = nullptr, int base = 10) const
`(since 6.4)` ushort | toUShort(bool *ok = nullptr, int base = 10) const

Class QLine:

`(since 6.4)` QLineF | toLineF() const

Class QListWidgetItem:

`(since 6.4)` void | setTextAlignment(Qt::Alignment alignment)

Class QMap:

`(since 6.4)` auto | asKeyValueRange() &&
`(since 6.4)` auto | asKeyValueRange() &
`(since 6.4)` auto | asKeyValueRange() const &&
`(since 6.4)` auto | asKeyValueRange() const &

Class QMargins:

`(since 6.4)` QMarginsF | toMarginsF() const

Class QMetaType:

`(since 6.4)` size_t | qHash(QMetaType key, size_t seed = 0)

Class QMqttSubscriptionProperties:

`(since 6.4)` bool | noLocal() const
`(since 6.4)` void | setNoLocal(bool noloc)

Class QMultiHash:

`(since 6.4)` auto | asKeyValueRange() &&
`(since 6.4)` auto | asKeyValueRange() &
`(since 6.4)` auto | asKeyValueRange() const &&
`(since 6.4)` auto | asKeyValueRange() const &

Class QMultiMap:

`(since 6.4)` auto | asKeyValueRange() &&
`(since 6.4)` auto | asKeyValueRange() &
`(since 6.4)` auto | asKeyValueRange() const &&
`(since 6.4)` auto | asKeyValueRange() const &

Class QMutexLocker:

`(since 6.4)` bool | isLocked() const
`(since 6.4)` QMutexLocker<Mutex> & | operator=(QMutexLocker<Mutex> &&other)
`(since 6.4)` void | swap(QMutexLocker<Mutex> &other)

Class QNetworkInformation:

`(since 6.4)` bool | loadBackendByFeatures(QNetworkInformation::Features features)
`(since 6.4)` bool | loadBackendByName(QStringView backend)

Class QObject:

`(since 6.4)` bool | isQuickItemType() const
`(since 6.4)` void | setObjectName(QAnyStringView name)

Class QPoint:

`(since 6.4)` QPointF | toPointF() const

Class QPolygon:

`(since 6.4)` QPolygonF | toPolygonF() const

Class QQmlApplicationEngine:

`(since 6.4)` void | objectCreationFailed(const QUrl &url)

Class QQuickRenderTarget:

`(since 6.4)` QQuickRenderTarget | fromD3D11Texture(void *texture, uint format, const QSize &pixelSize, int sampleCount = 1)
`(since 6.4)` QQuickRenderTarget | fromMetalTexture(MTLTexture *texture, uint format, const QSize &pixelSize, int sampleCount = 1)
`(since 6.4)` QQuickRenderTarget | fromOpenGLTexture(uint textureId, uint format, const QSize &pixelSize, int sampleCount = 1)
`(since 6.4)` QQuickRenderTarget | fromPaintDevice(QPaintDevice *device)
`(since 6.4)` QQuickRenderTarget | fromVulkanImage(VkImage image, VkImageLayout layout, VkFormat format, const QSize &pixelSize, int sampleCount = 1)
`(since 6.4)` bool | mirrorVertically() const
`(since 6.4)` void | setMirrorVertically(bool enable)

Class QRect:

`(since 6.4)` QRectF | toRectF() const

Class QSGMaterialShader:

`(since 6.4)` int | combinedImageSamplerCount(int binding) const

Class QSize:

`(since 6.4)` QSizeF | toSizeF() const

Class QString:

`(since 6.4)` QString | operator""_s(const char16_t *str, size_t size)

Class QStringView:

`(since 6.4)` qsizetype | count(QLatin1StringView l1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
`(since 6.4)` int | localeAwareCompare(QStringView other) const

Class QTableWidgetItem:

`(since 6.4)` void | setTextAlignment(Qt::Alignment alignment)

Class QTcpServer:

`(since 6.4)` void | pendingConnectionAvailable()

Class QTemporaryDir:

`(since 6.4)` QTemporaryDir & | operator=(QTemporaryDir &&other)
`(since 6.4)` void | swap(QTemporaryDir &other)

Class QTextCursor:

`(since 6.4)` void | insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub)

Class QTextDocumentFragment:

`(since 6.4)` QTextDocumentFragment | fromMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub)
`(since 6.4)` QString | toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const
`(since 6.4)` QString | toRawText() const

Class QTextStream:

`(since 6.4)` QTextStream & | operator>>(char16_t &c)

Class QTextToSpeech:

`(since 6.4)` bool | setEngine(const QString &engine, const QVariantMap &params = QVariantMap())

Class QTimeZone:

`(since 6.4)` QTimeZone | fromStdTimeZonePtr(const int *timeZone)

Class QTreeWidgetItem:

`(since 6.4)` void | setTextAlignment(int column, Qt::Alignment alignment)

Class QVarLengthArray:

`(since 6.4)` void | resize(qsizetype size, const T &v)

Class QVersionNumber:

`(since 6.4)` QVersionNumber | fromString(QAnyStringView string, qsizetype *suffixIndex = nullptr)

Class QVoice:

`(since 6.4)` QDataStream & | operator<<(QDataStream &stream, const QVoice &voice)
`(since 6.4)` QDebug | operator<<(QDebug debug, const QVoice &voice)
`(since 6.4)` QDataStream & | operator>>(QDataStream &stream, QVoice &voice)
`(since 6.4)` void | swap(QVoice &other)

Class QWebEnginePage:

`(since 6.4)` void | fileSystemAccessRequested(QWebEngineFileSystemAccessRequest request)

Class QWebSocket:

`(since 6.4)` QWebSocketHandshakeOptions | handshakeOptions() const
`(since 6.4)` void | open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options)
`(since 6.4)` void | open(const QUrl &url, const QWebSocketHandshakeOptions &options)
`(since 6.4)` QString | subprotocol() const

Class QWebSocketServer:

`(since 6.4)` void | setSupportedSubprotocols(const QStringList &protocols)
`(since 6.4)` QStringList | supportedSubprotocols() const

### New Functions in Namespaces

`(since 6.4)` bool | qIsPolishScheduled(const QQuickWindow *window)
`(since 6.4)` bool | qWaitForPolish(const QQuickWindow *window, int timeout = defaultTimeout)
`(since 6.4)` bool | qWaitForPolish(const QQuickItem *item, int timeout = defaultTimeout)

### New Macros

`(since 6.4)` | QCOMPARE_EQ(computed, baseline)
`(since 6.4)` | QCOMPARE_GE(computed, baseline)
`(since 6.4)` | QCOMPARE_GT(computed, baseline)
`(since 6.4)` | QCOMPARE_LE(computed, baseline)
`(since 6.4)` | QCOMPARE_LT(computed, baseline)
`(since 6.4)` | QCOMPARE_NE(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_EQ(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_EQ_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | QTRY_COMPARE_GE(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_GE_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | QTRY_COMPARE_GT(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_GT_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | QTRY_COMPARE_LE(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_LE_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | QTRY_COMPARE_LT(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_LT_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | QTRY_COMPARE_NE(computed, baseline)
`(since 6.4)` | QTRY_COMPARE_NE_WITH_TIMEOUT(computed, baseline, timeout)
`(since 6.4)` | Q_CONSTINIT

### New Enum Types

`(since 6.4)` enum | PolygonMode { Fill, Line }

### New Enum Values

enum value | Error::InvalidResponseError
enum value | Error::MissingPermissionsError
enum value | Error::MissingPermissionsError
enum value | Error::MissingPermissionsError
enum value | Error::MissingPermissionsError
enum value | Error::MissingPermissionsError
enum value | Resource::RedirectPaintDevice
enum value | ResourceType::ResourceTypeWebSocket
enum value | SocketError::MissingPermissionsError
enum value | WebAttribute::NavigateOnDropEnabled

### New Properties

`(since 6.4)` clearButtonEnabled : bool `(since 6.4)` layoutEnabled : bool `(since 6.4)` engine : QString | `(since 6.4)` locale : const QLocale `(since 6.4)` isOpaque : bool

### New Variables

`(since 6.4)` QSGMaterialShader::GraphicsPipelineState::PolygonMode | polygonMode
`(since 6.4)` const QOperatingSystemVersionBase | MacOSVentura
`(since 6.4)` const QOperatingSystemVersionBase | Windows11_21H2
`(since 6.4)` const QOperatingSystemVersionBase | Windows11_22H2

### New QML Types

B
  BakedLightmap
  BoxShape

C
  CapsuleGeometry
  CapsuleShape
  CharacterController
  CollisionShape
  ColorDialog
  ConvexMeshShape

D
  DynamicRigidBody

F
  FrameAnimation

H
  HeightFieldGeometry
  HeightFieldShape

I
  InputMethod
  InstanceModel
  InstanceRepeater

L
  Lightmapper
  LineParticle3D
  LookAtNode

P
  PdfBookmarkModel
  PdfPageImage
  PhysicsBody
  PhysicsMaterial
  PhysicsNode
  PhysicsWorld
  PlaneShape

R
  Repeller3D

S
  ScaleAffector3D
  SphereShape
  StaticRigidBody
  SystemInformation

T
  TriangleMeshShape
  TriggerBody

### New QML Properties

QML Type Model:

`(since 6.4)` | castsReflections : bool

QML Type ReflectionProbe:

`(since 6.4)` | debugView : bool

QML Type SceneEnvironment:

`(since 6.4)` | skyBoxCubeMap : QtQuick3D::CubeMapTexture
`(since 6.4)` | skyboxBlurAmount : real
`(since 6.4)` | specularAAEnabled : bool

QML Type SpriteParticle3D:

`(since 6.4)` | castsReflections : bool

QML Type TableView:

`(since 6.4)` | animate : bool
`(since 6.4)` | keyNavigationEnabled : bool
`(since 6.4)` | pointerNavigationEnabled : bool
`(since 6.4)` | selectionBehavior : enumeration

QML Type View3D:

`(since 6.4)` | renderFormat : enumeration

QML Type WaylandSurface:

`(since 6.4)` | isOpaque : bool

QML Type WebSocket:

`(since 6.4)` | negotiatedSubprotocol : string
`(since 6.4)` | requestedSubprotocols : list<string>

QML Type WebSocketServer:

`(since 6.4)` | supportedSubprotocols : list<string>

### New QML Methods

QML Type TableView:

`(since 6.4)` point | cellAtIndex(QModelIndex modelIndex)
`(since 6.4)` int | columnAtIndex(QModelIndex modelIndex)
`(since 6.4)` QModelIndex | modelIndex(point cell)
`(since 6.4)` int | rowAtIndex(QModelIndex modelIndex)

QML Type TreeView:

`(since 6.4)` void | collapseRecursively(row = -1)
`(since 6.4)` void | expandRecursively(row = -1, depth = -1)
`(since 6.4)` void | expandToIndex(QModelIndex index)