[neon/forks/pyqt6/Neon/release] /: New upstream version 6.11.0

Dmitry Shachnev null at kde.org
Mon Jul 27 14:39:11 BST 2026


Git commit 628750d86635194e57c78e182abd47191574c012 by Dmitry Shachnev.
Committed on 31/03/2026 at 13:28.
Pushed by carlosdem into branch 'Neon/release'.

New upstream version 6.11.0

M  +20   -0    ChangeLog
M  +4    -0    NEWS
M  +3    -3    PKG-INFO
M  +2    -6    project.py
M  +3    -3    pyproject.toml
M  +4    -3    sip/QtCore/QtCoremod.sip
M  +12   -0    sip/QtCore/qchar.sip
M  +3    -0    sip/QtCore/qdatastream.sip
M  +6    -0    sip/QtCore/qlocale.sip
M  +6    -0    sip/QtCore/qmetaobject.sip
M  +3    -0    sip/QtCore/qnamespace.sip
M  +3    -0    sip/QtCore/qobject.sip
M  +23   -0    sip/QtCore/qrangemodel.sip
M  +8    -1    sip/QtCore/qsavefile.sip
M  +11   -0    sip/QtCore/qstringconverter_base.sip
M  +3    -0    sip/QtCore/qtemporaryfile.sip
M  +3    -0    sip/QtCore/qtextboundaryfinder.sip
M  +1    -0    sip/QtGui/QtGuimod.sip
M  +3    -0    sip/QtGui/qpainter.sip
A  +251  -0    sip/QtGui/qpygui_qmap.sip
M  +36   -0    sip/QtGui/qquaternion.sip
M  +7    -0    sip/QtGui/qrawfont.sip
M  +18   -0    sip/QtGui/qtextformat.sip
M  +5    -6    sip/QtGui/qtextlayout.sip
M  +9    -0    sip/QtNetwork/qabstractsocket.sip
M  +3    -0    sip/QtNetwork/qauthenticator.sip
M  +21   -0    sip/QtNetwork/qnetworkrequest.sip
M  +3    -0    sip/QtNetwork/qssl.sip
M  +9    -0    sip/QtQml/qqmlcontext.sip
M  +1    -1    sip/QtQml/qqmlerror.sip
M  +1    -1    sip/QtQml/qqmlproperty.sip
M  +10   -0    sip/QtQml/qqmlpropertymap.sip
M  +1    -1    sip/QtQuick/qquicktextdocument.sip
M  +5    -0    sip/QtQuick/qquickwindow.sip
M  +5    -0    sip/QtSvg/qsvggenerator.sip
M  +1    -1    sip/QtSvg/qtsvgglobal.sip
M  +5    -0    sip/QtWebSockets/qwebsocketserver.sip
M  +0    -1    sip/QtWidgets/QtWidgetsmod.sip
M  +6    -0    sip/QtWidgets/qabstractitemview.sip
M  +8    -0    sip/QtWidgets/qcolumnview.sip
D  +0    -21   sip/QtWidgets/qfilesystemmodel.sip
M  +6    -0    sip/QtWidgets/qstyle.sip
M  +25   -0    sip/QtWidgets/qstyleoption.sip
M  +3    -0    sip/QtWidgets/qwizard.sip

https://invent.kde.org/neon/forks/pyqt6/-/commit/628750d86635194e57c78e182abd47191574c012

diff --git a/ChangeLog b/ChangeLog
index 7c0da8c..c9a692c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+commit 96280ff4fcc57819d220e9d8d323a49b48c866d3
+Author: Phil Thompson <phil at riverbankcomputing.com>
+Date:   Tue Mar 24 15:35:53 2026 +0000
+
+    Release v6.11.0
+
+commit b2bf3fc00bfd54dc4574cf9b1bbc9cadea2a2e1c
+Author: Phil Thompson <phil at riverbankcomputing.com>
+Date:   Fri Mar 13 15:23:21 2026 +0000
+
+    Support for Qt v6.11
+    
+    Added support for Qt v6.11.0rc.
+
+commit 3f91c40015f604d409fde7cef3f671aa9fe8c051
+Author: Phil Thompson <phil at riverbankcomputing.com>
+Date:   Tue Jan 13 15:55:31 2026 +0000
+
+    Use %MinimumABIVersion instead of setting the ABI in project.py.
+
 commit b12c6f363ca4e6140b4c5ebbe6b1c820b123c3a9
 Author: Phil Thompson <phil at riverbankcomputing.com>
 Date:   Thu Jan 8 12:33:27 2026 +0000
diff --git a/NEWS b/NEWS
index 53f52f8..b571cde 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,7 @@
+v6.11.0 24th March 2026
+  - Added support for Qt v6.11.
+  - Python v3.9 is no longer supported.
+
 v6.10.2 8th January 2026
   - Fixed a regression introduced in v6.5.0 in the handling of the return value
     of `QSqlQueryModel.query()`.
diff --git a/PKG-INFO b/PKG-INFO
index 4fd2bea..954a3be 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,11 +1,11 @@
 Metadata-Version: 2.4
 Name: PyQt6
-Version: 6.10.2
-Requires-Python: >=3.9
+Version: 6.11.0
+Requires-Python: >=3.10
 Summary: Python bindings for the Qt cross platform application toolkit
 Description-Content-Type: text/markdown
 Project-Url: homepage, https://www.riverbankcomputing.com/software/pyqt/
-Requires-Dist: PyQt6-sip (>=13.8, <14)
+Requires-Dist: PyQt6-sip (>=13.11, <14)
 License-Expression: GPL-3.0-only
 License-File: LICENSE
 Author-Email: Riverbank Computing Limited <info at riverbankcomputing.com>
diff --git a/project.py b/project.py
index 688f200..5af0317 100644
--- a/project.py
+++ b/project.py
@@ -27,10 +27,6 @@ from sipbuild import (Buildable, BuildableModule, Installable, Option,
         UserException)
 
 
-# The minimum sip module ABI version needed.
-ABI_VERSION = '13.8'
-
-
 class PyQt(PyQtProject):
     """ The PyQt6 project. """
 
@@ -39,8 +35,8 @@ class PyQt(PyQtProject):
 
         # We specify the name of the sip module because PyQt-builder doesn't
         # provide it if we are creating an sdist.
-        super().__init__(abi_version=ABI_VERSION, sip_module='PyQt6.sip',
-                dunder_init=True, tag_prefix='Qt', console_scripts=[
+        super().__init__(sip_module='PyQt6.sip', dunder_init=True,
+                tag_prefix='Qt', console_scripts=[
                     'pylupdate6 = PyQt6.lupdate.pylupdate:main',
                     'pyuic6 = PyQt6.uic.pyuic:main'])
 
diff --git a/pyproject.toml b/pyproject.toml
index 850dc01..4699191 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,16 +1,16 @@
 # Specify the build system for the project.
 [build-system]
-requires = ["sip >=6.13.1, <7", "PyQt-builder >=1.19, <2"]
+requires = ["sip >=6.15, <7", "PyQt-builder >=1.19, <2"]
 build-backend = "sipbuild.api"
 
 [project]
 name = "PyQt6"
-version = "6.10.2"
+version = "6.11.0"
 description = "Python bindings for the Qt cross platform application toolkit"
 readme = "README.md"
 urls.homepage = "https://www.riverbankcomputing.com/software/pyqt/"
 dependencies = []
-requires-python = ">=3.9"
+requires-python = ">=3.10"
 license = "GPL-3.0-only"
 license-files = ["LICENSE"]
 
diff --git a/sip/QtCore/QtCoremod.sip b/sip/QtCore/QtCoremod.sip
index c963d01..de16dc7 100644
--- a/sip/QtCore/QtCoremod.sip
+++ b/sip/QtCore/QtCoremod.sip
@@ -22,7 +22,7 @@
 
 %Module(name=PyQt6.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt6, keyword_arguments="Optional", use_limited_api=True, py_ssize_t_clean=True)
 
-%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0 Qt_6_9_0 Qt_6_10_0}
+%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0 Qt_6_9_0 Qt_6_10_0 Qt_6_11_0}
 
 %Platforms {Android iOS Linux macOS WebAssembly Windows}
 
@@ -66,6 +66,7 @@ WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
 %Plugin PyQt6
 
+%MinimumABIVersion "13.8"
 %DefaultEncoding "ASCII"
 
 %Include(name=pyqt-internal.sip5, optional=True)
@@ -78,8 +79,8 @@ int PYQT_VERSION;
 const char *PYQT_VERSION_STR;
 
 %ModuleCode
-static int PYQT_VERSION = 0x060a02;
-static const char *PYQT_VERSION_STR = "6.10.2";
+static int PYQT_VERSION = 0x060b00;
+static const char *PYQT_VERSION_STR = "6.11.0";
 %End
 
 %Include qglobal.sip
diff --git a/sip/QtCore/qchar.sip b/sip/QtCore/qchar.sip
index ea1001c..07699d2 100644
--- a/sip/QtCore/qchar.sip
+++ b/sip/QtCore/qchar.sip
@@ -252,6 +252,18 @@ public:
 %End
 %If (Qt_6_9_0 -)
         Script_TuluTigalari,
+%End
+%If (Qt_6_11_0 -)
+        Script_Sidetic,
+%End
+%If (Qt_6_11_0 -)
+        Script_TaiYo,
+%End
+%If (Qt_6_11_0 -)
+        Script_TolongSiki,
+%End
+%If (Qt_6_11_0 -)
+        Script_BeriaErfe,
 %End
     };
 };
diff --git a/sip/QtCore/qdatastream.sip b/sip/QtCore/qdatastream.sip
index b08db17..85ed8b6 100644
--- a/sip/QtCore/qdatastream.sip
+++ b/sip/QtCore/qdatastream.sip
@@ -91,6 +91,9 @@ public:
 %End
 %If (Qt_6_10_0 -)
         Qt_6_10,
+%End
+%If (Qt_6_11_0 -)
+        Qt_6_11,
 %End
     };
 
diff --git a/sip/QtCore/qlocale.sip b/sip/QtCore/qlocale.sip
index 0678451..8e37f37 100644
--- a/sip/QtCore/qlocale.sip
+++ b/sip/QtCore/qlocale.sip
@@ -433,6 +433,12 @@ public:
 %End
 %If (Qt_6_9_0 -)
         SwampyCree,
+%End
+%If (Qt_6_11_0 -)
+        Ladin,
+%End
+%If (Qt_6_11_0 -)
+        Shan,
 %End
     };
 
diff --git a/sip/QtCore/qmetaobject.sip b/sip/QtCore/qmetaobject.sip
index 32f6b79..56696db 100644
--- a/sip/QtCore/qmetaobject.sip
+++ b/sip/QtCore/qmetaobject.sip
@@ -270,6 +270,12 @@ public:
     QMetaType metaType() const;
     bool isBindable() const;
     int typeId() const;
+%If (Qt_6_11_0 -)
+    bool isVirtual() const;
+%End
+%If (Qt_6_11_0 -)
+    bool isOverride() const;
+%End
 };
 
 class QMetaClassInfo
diff --git a/sip/QtCore/qnamespace.sip b/sip/QtCore/qnamespace.sip
index c0f09c2..3fad087 100644
--- a/sip/QtCore/qnamespace.sip
+++ b/sip/QtCore/qnamespace.sip
@@ -1178,6 +1178,9 @@ namespace Qt
         AccessibleDescriptionRole,
         SizeHintRole,
         InitialSortOrderRole,
+%If (Qt_6_11_0 -)
+        RangeModelAdapterRole,
+%End
         UserRole,
     };
 
diff --git a/sip/QtCore/qobject.sip b/sip/QtCore/qobject.sip
index f601cf3..9f0f1c0 100644
--- a/sip/QtCore/qobject.sip
+++ b/sip/QtCore/qobject.sip
@@ -561,6 +561,9 @@ public:
 %If (Qt_6_4_0 -)
     bool isQuickItemType() const;
 %End
+%If (Qt_6_11_0 -)
+    bool isQmlExposed() const;
+%End
 
 private:
     QObject(const QObject &);
diff --git a/sip/QtCore/qrangemodel.sip b/sip/QtCore/qrangemodel.sip
index 651cd44..2e72ff6 100644
--- a/sip/QtCore/qrangemodel.sip
+++ b/sip/QtCore/qrangemodel.sip
@@ -92,6 +92,29 @@ protected slots:
 protected:
     virtual bool event(QEvent *);
     virtual bool eventFilter(QObject *, QEvent *);
+
+public:
+%If (Qt_6_11_0 -)
+
+    enum class AutoConnectPolicy
+    {
+        None,
+        Full,
+        OnRead,
+    };
+
+%End
+%If (Qt_6_11_0 -)
+    QRangeModel::AutoConnectPolicy autoConnectPolicy() const;
+%End
+%If (Qt_6_11_0 -)
+    void setAutoConnectPolicy(QRangeModel::AutoConnectPolicy policy);
+%End
+
+signals:
+%If (Qt_6_11_0 -)
+    void autoConnectPolicyChanged(QRangeModel::AutoConnectPolicy policy);
+%End
 };
 
 %End
diff --git a/sip/QtCore/qsavefile.sip b/sip/QtCore/qsavefile.sip
index ba8b807..246b14d 100644
--- a/sip/QtCore/qsavefile.sip
+++ b/sip/QtCore/qsavefile.sip
@@ -27,9 +27,16 @@ class QSaveFile : public QFileDevice
 %End
 
 public:
-    explicit QSaveFile(const QString &name);
+%If (Qt_6_11_0 -)
+    QSaveFile(const QString &name, QObject *parent /TransferThis/ = 0);
+%End
     explicit QSaveFile(QObject *parent /TransferThis/ = 0);
+%If (- Qt_6_11_0)
+    explicit QSaveFile(const QString &name);
+%End
+%If (- Qt_6_11_0)
     QSaveFile(const QString &name, QObject *parent /TransferThis/);
+%End
     virtual ~QSaveFile();
     virtual QString fileName() const;
     void setFileName(const QString &name);
diff --git a/sip/QtCore/qstringconverter_base.sip b/sip/QtCore/qstringconverter_base.sip
index a69bb30..c92fb6c 100644
--- a/sip/QtCore/qstringconverter_base.sip
+++ b/sip/QtCore/qstringconverter_base.sip
@@ -71,6 +71,17 @@ public:
         System,
     };
 
+%If (Qt_6_11_0 -)
+
+    enum class FinalizeResultError : quint8
+    {
+        NoError,
+        InvalidCharacters,
+        NotEnoughSpace,
+    };
+
+%End
+
 protected:
     QStringConverter();
     QStringConverter(QStringConverter::Encoding encoding, QStringConverterBase::Flags f);
diff --git a/sip/QtCore/qtemporaryfile.sip b/sip/QtCore/qtemporaryfile.sip
index 4c184f7..51ba175 100644
--- a/sip/QtCore/qtemporaryfile.sip
+++ b/sip/QtCore/qtemporaryfile.sip
@@ -41,6 +41,9 @@ public:
     static QTemporaryFile *createNativeFile(const QString &fileName) /Factory,ReleaseGIL/;
     static QTemporaryFile *createNativeFile(QFile &file) /Factory,ReleaseGIL/;
     bool rename(const QString &newName);
+%If (Qt_6_11_0 -)
+    bool renameOverwrite(const QString &newName);
+%End
 
 protected:
     virtual bool open(QIODeviceBase::OpenMode flags) /ReleaseGIL/;
diff --git a/sip/QtCore/qtextboundaryfinder.sip b/sip/QtCore/qtextboundaryfinder.sip
index 47d027e..4c2db63 100644
--- a/sip/QtCore/qtextboundaryfinder.sip
+++ b/sip/QtCore/qtextboundaryfinder.sip
@@ -62,4 +62,7 @@ public:
     qsizetype toPreviousBoundary();
     bool isAtBoundary() const;
     QTextBoundaryFinder::BoundaryReasons boundaryReasons() const;
+%If (Qt_6_11_0 -)
+    void swap(QTextBoundaryFinder &other /Constrained/);
+%End
 };
diff --git a/sip/QtGui/QtGuimod.sip b/sip/QtGui/QtGuimod.sip
index 531a3e6..2c28f9d 100644
--- a/sip/QtGui/QtGuimod.sip
+++ b/sip/QtGui/QtGuimod.sip
@@ -138,6 +138,7 @@ WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 %Include qwindow.sip
 %Include qwindowdefs.sip
 %Include qpygui_native_interface.sip
+%Include qpygui_qmap.sip
 %Include qpygui_qlist.sip
 %Include qpygui_vulkan.sip
 %Include opengl_types.sip
diff --git a/sip/QtGui/qpainter.sip b/sip/QtGui/qpainter.sip
index fd294d0..ccf71ff 100644
--- a/sip/QtGui/qpainter.sip
+++ b/sip/QtGui/qpainter.sip
@@ -548,6 +548,9 @@ public:
     void fillRect(int x, int y, int w, int h, QGradient::Preset preset);
     void fillRect(const QRect &r, QGradient::Preset preset);
     void fillRect(const QRectF &r, QGradient::Preset preset);
+%If (Qt_6_11_0 -)
+    QPointF brushOriginF() const;
+%End
 
 private:
     QPainter(const QPainter &);
diff --git a/sip/QtGui/qpygui_qmap.sip b/sip/QtGui/qpygui_qmap.sip
new file mode 100644
index 0000000..66e3306
--- /dev/null
+++ b/sip/QtGui/qpygui_qmap.sip
@@ -0,0 +1,251 @@
+// This is the SIP interface definition for the QMap mapped types specific to
+// QtGui.
+//
+// Copyright (c) 2026 Riverbank Computing Limited <info at riverbankcomputing.com>
+// 
+// This file is part of PyQt6.
+// 
+// This file may be used under the terms of the GNU General Public License
+// version 3.0 as published by the Free Software Foundation and appearing in
+// the file LICENSE included in the packaging of this file.  Please review the
+// following information to ensure the GNU General Public License version 3.0
+// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
+// 
+// If you do not wish to use this file under the terms of the GPL version 3.0
+// then you may purchase a commercial license.  For more information contact
+// info at riverbankcomputing.com.
+// 
+// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+%If (Qt_6_11_0 -)
+
+template<_TYPE_, quint32>
+%MappedType QMap<_TYPE_, quint32>
+        /TypeHint="Dict[_TYPE_, int]", TypeHintValue="{}"/
+{
+%TypeHeaderCode
+#include <qfont.h>
+#include <qmap.h>
+%End
+
+%ConvertFromTypeCode
+    PyObject *d = PyDict_New();
+
+    if (!d)
+        return 0;
+
+    QMap<_TYPE_, quint32>::const_iterator it = sipCpp->constBegin();
+    QMap<_TYPE_, quint32>::const_iterator end = sipCpp->constEnd();
+
+    while (it != end)
+    {
+        _TYPE_ *k = new _TYPE_(it.key());
+        PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE_,
+                sipTransferObj);
+
+        if (!kobj)
+        {
+            delete k;
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        PyObject *vobj = PyLong_FromUnsignedLong(it.value());
+
+        if (!vobj)
+        {
+            Py_DECREF(kobj);
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        int rc = PyDict_SetItem(d, kobj, vobj);
+
+        Py_DECREF(vobj);
+        Py_DECREF(kobj);
+
+        if (rc < 0)
+        {
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        ++it;
+    }
+
+    return d;
+%End
+
+%ConvertToTypeCode
+    if (!sipIsErr)
+        return PyDict_Check(sipPy);
+
+    QMap<_TYPE_, quint32> *qm = new QMap<_TYPE_, quint32>;
+
+    Py_ssize_t pos = 0;
+    PyObject *kobj, *vobj;
+ 
+    while (PyDict_Next(sipPy, &pos, &kobj, &vobj))
+    {
+        int kstate;
+        _TYPE_ *k = reinterpret_cast<_TYPE_ *>(
+                sipForceConvertToType(kobj, sipType__TYPE_, sipTransferObj,
+                        SIP_NOT_NONE, &kstate, sipIsErr));
+
+        if (*sipIsErr)
+        {
+            PyErr_Format(PyExc_TypeError,
+                    "a dict key has type '%s' but '_TYPE_' is expected",
+                    sipPyTypeName(Py_TYPE(kobj)));
+
+            delete qm;
+
+            return 0;
+        }
+
+        quint32 v = sipLong_AsUnsignedInt(vobj);
+
+        if (PyErr_Occurred())
+        {
+            if (PyErr_ExceptionMatches(PyExc_TypeError))
+                PyErr_Format(PyExc_TypeError,
+                        "a dict value has type '%s' but 'int' is expected",
+                        sipPyTypeName(Py_TYPE(vobj)));
+
+            delete qm;
+            *sipIsErr = 1;
+
+            return 0;
+        }
+
+        qm->insert(*k, v);
+
+        sipReleaseType(k, sipType__TYPE_, kstate);
+    }
+ 
+    *sipCppPtr = qm;
+ 
+    return sipGetState(sipTransferObj);
+%End
+};
+
+
+template<_TYPE_, float>
+%MappedType QMap<_TYPE_, float>
+        /TypeHint="Dict[_TYPE_, float]", TypeHintValue="{}"/
+{
+%TypeHeaderCode
+#include <qfont.h>
+#include <qmap.h>
+%End
+
+%ConvertFromTypeCode
+    PyObject *d = PyDict_New();
+
+    if (!d)
+        return 0;
+
+    QMap<_TYPE_, float>::const_iterator it = sipCpp->constBegin();
+    QMap<_TYPE_, float>::const_iterator end = sipCpp->constEnd();
+
+    while (it != end)
+    {
+        _TYPE_ *k = new _TYPE_(it.key());
+        PyObject *kobj = sipConvertFromNewType(k, sipType__TYPE_,
+                sipTransferObj);
+
+        if (!kobj)
+        {
+            delete k;
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        PyObject *vobj = PyFloat_FromDouble(it.value());
+
+        if (!vobj)
+        {
+            Py_DECREF(kobj);
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        int rc = PyDict_SetItem(d, kobj, vobj);
+
+        Py_DECREF(vobj);
+        Py_DECREF(kobj);
+
+        if (rc < 0)
+        {
+            Py_DECREF(d);
+
+            return 0;
+        }
+
+        ++it;
+    }
+
+    return d;
+%End
+
+%ConvertToTypeCode
+    if (!sipIsErr)
+        return PyDict_Check(sipPy);
+
+    QMap<_TYPE_, float> *qm = new QMap<_TYPE_, float>;
+
+    Py_ssize_t pos = 0;
+    PyObject *kobj, *vobj;
+ 
+    while (PyDict_Next(sipPy, &pos, &kobj, &vobj))
+    {
+        int kstate;
+        _TYPE_ *k = reinterpret_cast<_TYPE_ *>(
+                sipForceConvertToType(kobj, sipType__TYPE_, sipTransferObj,
+                        SIP_NOT_NONE, &kstate, sipIsErr));
+
+        if (*sipIsErr)
+        {
+            PyErr_Format(PyExc_TypeError,
+                    "a dict key has type '%s' but '_TYPE_' is expected",
+                    sipPyTypeName(Py_TYPE(kobj)));
+
+            delete qm;
+
+            return 0;
+        }
+
+        float v = PyFloat_AsDouble(vobj);
+
+        if (PyErr_Occurred())
+        {
+            if (PyErr_ExceptionMatches(PyExc_TypeError))
+                PyErr_Format(PyExc_TypeError,
+                        "a dict value has type '%s' but 'float' is expected",
+                        sipPyTypeName(Py_TYPE(vobj)));
+
+            delete qm;
+            *sipIsErr = 1;
+
+            return 0;
+        }
+
+        qm->insert(*k, v);
+
+        sipReleaseType(k, sipType__TYPE_, kstate);
+    }
+ 
+    *sipCppPtr = qm;
+ 
+    return sipGetState(sipTransferObj);
+%End
+};
+
+%End
diff --git a/sip/QtGui/qquaternion.sip b/sip/QtGui/qquaternion.sip
index 8088dae..4372734 100644
--- a/sip/QtGui/qquaternion.sip
+++ b/sip/QtGui/qquaternion.sip
@@ -92,6 +92,9 @@ public:
     QMatrix3x3 toRotationMatrix() const;
     static QQuaternion fromRotationMatrix(const QMatrix3x3 &rot3x3);
     void getAxes(QVector3D *xAxis /Out/, QVector3D *yAxis /Out/, QVector3D *zAxis /Out/) const;
+%If (Qt_6_11_0 -)
+    static QQuaternion fromAxes(QQuaternion::Axes axes);
+%End
     static QQuaternion fromAxes(const QVector3D &xAxis, const QVector3D &yAxis, const QVector3D &zAxis);
     static QQuaternion fromDirection(const QVector3D &direction, const QVector3D &up);
     static QQuaternion rotationTo(const QVector3D &from, const QVector3D &to);
@@ -100,6 +103,39 @@ public:
     QQuaternion conjugated() const;
     QVector3D toEulerAngles() const;
     static QQuaternion fromEulerAngles(const QVector3D &eulerAngles);
+%If (Qt_6_11_0 -)
+
+    struct Axis
+    {
+%TypeHeaderCode
+#include <qquaternion.h>
+%End
+
+        float x;
+        float y;
+        float z;
+        static QQuaternion::Axis fromVector3D(QVector3D v);
+        QVector3D toVector3D() const;
+    };
+
+%End
+%If (Qt_6_11_0 -)
+
+    struct Axes
+    {
+%TypeHeaderCode
+#include <qquaternion.h>
+%End
+
+        QQuaternion::Axis x;
+        QQuaternion::Axis y;
+        QQuaternion::Axis z;
+    };
+
+%End
+%If (Qt_6_11_0 -)
+    QQuaternion::Axes toAxes() const;
+%End
 };
 
 bool operator==(const QQuaternion &q1, const QQuaternion &q2);
diff --git a/sip/QtGui/qrawfont.sip b/sip/QtGui/qrawfont.sip
index 2e05a95..ddfc1fe 100644
--- a/sip/QtGui/qrawfont.sip
+++ b/sip/QtGui/qrawfont.sip
@@ -90,6 +90,13 @@ public:
 %MethodCode
         sipRes = qHash(*sipCpp);
 %End
+
+%If (Qt_6_11_0 -)
+    quint32 glyphCount() const;
+%End
+%If (Qt_6_11_0 -)
+    QString glyphName(quint32 glyphIndex) const;
+%End
 };
 
 %End
diff --git a/sip/QtGui/qtextformat.sip b/sip/QtGui/qtextformat.sip
index 1b1ecef..d0cd0b9 100644
--- a/sip/QtGui/qtextformat.sip
+++ b/sip/QtGui/qtextformat.sip
@@ -237,6 +237,12 @@ public:
 %End
 %If (Qt_6_8_0 -)
         ImageMaxWidth,
+%End
+%If (Qt_6_11_0 -)
+        FontFeatures,
+%End
+%If (Qt_6_11_0 -)
+        FontVariableAxes,
 %End
         UserProperty,
     };
@@ -413,6 +419,18 @@ public:
     qreal subScriptBaseline() const;
     void setBaselineOffset(qreal baseline);
     qreal baselineOffset() const;
+%If (Qt_6_11_0 -)
+    void setFontFeatures(const QMap<QFont::Tag, quint32> &fontFeatures);
+%End
+%If (Qt_6_11_0 -)
+    QMap<QFont::Tag, quint32> fontFeatures() const;
+%End
+%If (Qt_6_11_0 -)
+    void setFontVariableAxes(const QMap<QFont::Tag, float> &fontVariableAxes);
+%End
+%If (Qt_6_11_0 -)
+    QMap<QFont::Tag, float> fontVariableAxes() const;
+%End
 };
 
 class QTextBlockFormat : public QTextFormat
diff --git a/sip/QtGui/qtextlayout.sip b/sip/QtGui/qtextlayout.sip
index 42669be..a8155b2 100644
--- a/sip/QtGui/qtextlayout.sip
+++ b/sip/QtGui/qtextlayout.sip
@@ -115,19 +115,15 @@ public:
     void setFormats(const QList<QTextLayout::FormatRange> &overrides);
     QList<QTextLayout::FormatRange> formats() const;
     void clearFormats();
-
-private:
-    QTextLayout(const QTextLayout &);
-
-public:
 %If (Qt_6_5_0 -)
 
-    enum GlyphRunRetrievalFlag
+    enum GlyphRunRetrievalFlag : quint16
     {
         RetrieveGlyphIndexes,
         RetrieveGlyphPositions,
         RetrieveStringIndexes,
         RetrieveString,
+        DefaultRetrievalFlags,
         RetrieveAll,
     };
 
@@ -135,6 +131,9 @@ public:
 %If (Qt_6_5_0 -)
     typedef QFlags<QTextLayout::GlyphRunRetrievalFlag> GlyphRunRetrievalFlags;
 %End
+
+private:
+    QTextLayout(const QTextLayout &);
 };
 
 class QTextLine
diff --git a/sip/QtNetwork/qabstractsocket.sip b/sip/QtNetwork/qabstractsocket.sip
index a178124..e696716 100644
--- a/sip/QtNetwork/qabstractsocket.sip
+++ b/sip/QtNetwork/qabstractsocket.sip
@@ -298,6 +298,15 @@ public:
         SendBufferSizeSocketOption,
         ReceiveBufferSizeSocketOption,
         PathMtuSocketOption,
+%If (Qt_6_11_0 -)
+        KeepAliveIdleOption,
+%End
+%If (Qt_6_11_0 -)
+        KeepAliveIntervalOption,
+%End
+%If (Qt_6_11_0 -)
+        KeepAliveCountOption,
+%End
     };
 
     virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
diff --git a/sip/QtNetwork/qauthenticator.sip b/sip/QtNetwork/qauthenticator.sip
index ae587fb..4c60c94 100644
--- a/sip/QtNetwork/qauthenticator.sip
+++ b/sip/QtNetwork/qauthenticator.sip
@@ -41,4 +41,7 @@ public:
     QVariant option(const QString &opt) const;
     QVariantHash options() const;
     void setOption(const QString &opt, const QVariant &value);
+%If (Qt_6_11_0 -)
+    void clear();
+%End
 };
diff --git a/sip/QtNetwork/qnetworkrequest.sip b/sip/QtNetwork/qnetworkrequest.sip
index 8846c1c..c34f0d5 100644
--- a/sip/QtNetwork/qnetworkrequest.sip
+++ b/sip/QtNetwork/qnetworkrequest.sip
@@ -184,4 +184,25 @@ public:
 %If (Qt_6_8_0 -)
     void setHeaders(const QHttpHeaders &newHeaders);
 %End
+%If (Qt_6_11_0 -)
+    static const std::chrono::milliseconds DefaultTransferTimeout;
+%End
+%If (Qt_6_11_0 -)
+    std::chrono::seconds tcpKeepAliveIdleTimeBeforeProbes() const;
+%End
+%If (Qt_6_11_0 -)
+    void setTcpKeepAliveIdleTimeBeforeProbes(std::chrono::seconds idle);
+%End
+%If (Qt_6_11_0 -)
+    std::chrono::seconds tcpKeepAliveIntervalBetweenProbes() const;
+%End
+%If (Qt_6_11_0 -)
+    void setTcpKeepAliveIntervalBetweenProbes(std::chrono::seconds interval);
+%End
+%If (Qt_6_11_0 -)
+    int tcpKeepAliveProbeCount() const;
+%End
+%If (Qt_6_11_0 -)
+    void setTcpKeepAliveProbeCount(int probes);
+%End
 };
diff --git a/sip/QtNetwork/qssl.sip b/sip/QtNetwork/qssl.sip
index a05ccb3..eccc546 100644
--- a/sip/QtNetwork/qssl.sip
+++ b/sip/QtNetwork/qssl.sip
@@ -47,6 +47,9 @@ namespace QSsl
         Dsa,
         Ec,
         Dh,
+%If (Qt_6_11_0 -)
+        MlDsa,
+%End
     };
 
     enum AlternativeNameEntryType
diff --git a/sip/QtQml/qqmlcontext.sip b/sip/QtQml/qqmlcontext.sip
index 9ec4eb5..177ff07 100644
--- a/sip/QtQml/qqmlcontext.sip
+++ b/sip/QtQml/qqmlcontext.sip
@@ -57,4 +57,13 @@ public:
 %If (Qt_6_2_0 -)
     QObject *objectForName(const QString &) const;
 %End
+%If (Qt_6_11_0 -)
+    QList<QQmlContext *> childContexts() const;
+%End
+%If (Qt_6_11_0 -)
+    QObject *findObjectRecursively(const QString &id) const;
+%End
+%If (Qt_6_11_0 -)
+    QList<QObject *> findObjectsRecursively(const QString &id) const;
+%End
 };
diff --git a/sip/QtQml/qqmlerror.sip b/sip/QtQml/qqmlerror.sip
index 465c054..0ac34d2 100644
--- a/sip/QtQml/qqmlerror.sip
+++ b/sip/QtQml/qqmlerror.sip
@@ -45,7 +45,7 @@ public:
     QtMsgType messageType() const;
     void setMessageType(QtMsgType messageType);
 %If (Qt_6_4_0 -)
-    void swap(QQmlError &other);
+    void swap(QQmlError &other /Constrained/);
 %End
 };
 
diff --git a/sip/QtQml/qqmlproperty.sip b/sip/QtQml/qqmlproperty.sip
index 7526ad6..19204b1 100644
--- a/sip/QtQml/qqmlproperty.sip
+++ b/sip/QtQml/qqmlproperty.sip
@@ -106,7 +106,7 @@ public:
     QMetaProperty property() const;
     QMetaMethod method() const;
 %If (Qt_6_3_0 -)
-    void swap(QQmlProperty &other);
+    void swap(QQmlProperty &other /Constrained/);
 %End
 };
 
diff --git a/sip/QtQml/qqmlpropertymap.sip b/sip/QtQml/qqmlpropertymap.sip
index 59a6032..f359007 100644
--- a/sip/QtQml/qqmlpropertymap.sip
+++ b/sip/QtQml/qqmlpropertymap.sip
@@ -50,4 +50,14 @@ signals:
 
 protected:
     virtual QVariant updateValue(const QString &key, const QVariant &input);
+
+public:
+%If (Qt_6_11_0 -)
+    static SIP_PYOBJECT create(QObject *parent /GetWrapper/ = 0) /TypeHint="QQmlPropertyMap|None"/;
+%MethodCode
+        sipRes = sipConvertFromType(QQmlPropertyMap::create(a0),
+                sipType_QQmlPropertyMap, a0Wrapper);
+%End
+
+%End
 };
diff --git a/sip/QtQuick/qquicktextdocument.sip b/sip/QtQuick/qquicktextdocument.sip
index cfa51b8..0d8315b 100644
--- a/sip/QtQuick/qquicktextdocument.sip
+++ b/sip/QtQuick/qquicktextdocument.sip
@@ -29,7 +29,7 @@ class QQuickTextDocument : public QObject
 public:
 %If (Qt_6_7_0 -)
 
-    enum class Status
+    enum class Status : quint8
     {
         Null,
         Loading,
diff --git a/sip/QtQuick/qquickwindow.sip b/sip/QtQuick/qquickwindow.sip
index 7d3082a..ae1739a 100644
--- a/sip/QtQuick/qquickwindow.sip
+++ b/sip/QtQuick/qquickwindow.sip
@@ -199,6 +199,11 @@ public:
     QQuickGraphicsDevice graphicsDevice() const;
     void setGraphicsConfiguration(const QQuickGraphicsConfiguration &config);
     QQuickGraphicsConfiguration graphicsConfiguration() const;
+
+signals:
+%If (Qt_6_11_0 -)
+    void devicePixelRatioChanged();
+%End
 };
 
 class QQuickCloseEvent;
diff --git a/sip/QtSvg/qsvggenerator.sip b/sip/QtSvg/qsvggenerator.sip
index 363b5f7..5a7d89e 100644
--- a/sip/QtSvg/qsvggenerator.sip
+++ b/sip/QtSvg/qsvggenerator.sip
@@ -66,4 +66,9 @@ public:
 %If (Qt_6_5_0 -)
     QSvgGenerator::SvgVersion svgVersion() const;
 %End
+
+protected:
+%If (Qt_6_11_0 -)
+    virtual void initPainter(QPainter *) const;
+%End
 };
diff --git a/sip/QtSvg/qtsvgglobal.sip b/sip/QtSvg/qtsvgglobal.sip
index 821be87..f45ea33 100644
--- a/sip/QtSvg/qtsvgglobal.sip
+++ b/sip/QtSvg/qtsvgglobal.sip
@@ -28,7 +28,7 @@ namespace QtSvg
 #include <qtsvgglobal.h>
 %End
 
-    enum Option
+    enum Option : quint32
     {
         NoOption,
         Tiny12FeaturesOnly,
diff --git a/sip/QtWebSockets/qwebsocketserver.sip b/sip/QtWebSockets/qwebsocketserver.sip
index 24958ff..e0bd7e6 100644
--- a/sip/QtWebSockets/qwebsocketserver.sip
+++ b/sip/QtWebSockets/qwebsocketserver.sip
@@ -94,6 +94,11 @@ public:
 %If (Qt_6_4_0 -)
     QStringList supportedSubprotocols() const;
 %End
+
+signals:
+%If (Qt_6_11_0 -)
+    void sslErrorsOccurred(QSslSocket *socket, const QList<QSslError> &errors);
+%End
 };
 
 %End
diff --git a/sip/QtWidgets/QtWidgetsmod.sip b/sip/QtWidgets/QtWidgetsmod.sip
index 5996533..cbd20a1 100644
--- a/sip/QtWidgets/QtWidgetsmod.sip
+++ b/sip/QtWidgets/QtWidgetsmod.sip
@@ -157,5 +157,4 @@ WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 %Include qwidget.sip
 %Include qwidgetaction.sip
 %Include qwizard.sip
-%Include qfilesystemmodel.sip
 %Include qpywidgets_qlist.sip
diff --git a/sip/QtWidgets/qabstractitemview.sip b/sip/QtWidgets/qabstractitemview.sip
index a721dae..9dfdf49 100644
--- a/sip/QtWidgets/qabstractitemview.sip
+++ b/sip/QtWidgets/qabstractitemview.sip
@@ -287,4 +287,10 @@ public:
 %If (Qt_6_9_0 -)
     void setUpdateThreshold(int threshold);
 %End
+%If (Qt_6_11_0 -)
+    Qt::MatchFlags keyboardSearchFlags() const;
+%End
+%If (Qt_6_11_0 -)
+    void setKeyboardSearchFlags(Qt::MatchFlags searchFlags);
+%End
 };
diff --git a/sip/QtWidgets/qcolumnview.sip b/sip/QtWidgets/qcolumnview.sip
index 14fddfc..049b3a0 100644
--- a/sip/QtWidgets/qcolumnview.sip
+++ b/sip/QtWidgets/qcolumnview.sip
@@ -62,4 +62,12 @@ protected:
 
 protected slots:
     virtual void currentChanged(const QModelIndex &current, const QModelIndex &previous);
+
+public:
+%If (Qt_6_11_0 -)
+    void setPreviewColumnVisible(bool visible);
+%End
+%If (Qt_6_11_0 -)
+    bool isPreviewColumnVisible() const;
+%End
 };
diff --git a/sip/QtWidgets/qfilesystemmodel.sip b/sip/QtWidgets/qfilesystemmodel.sip
deleted file mode 100644
index 58d1966..0000000
--- a/sip/QtWidgets/qfilesystemmodel.sip
+++ /dev/null
@@ -1,21 +0,0 @@
-// qfilesystemmodel.sip generated by MetaSIP
-//
-// This file is part of the QtWidgets Python extension module.
-//
-// Copyright (c) 2026 Riverbank Computing Limited <info at riverbankcomputing.com>
-// 
-// This file is part of PyQt6.
-// 
-// This file may be used under the terms of the GNU General Public License
-// version 3.0 as published by the Free Software Foundation and appearing in
-// the file LICENSE included in the packaging of this file.  Please review the
-// following information to ensure the GNU General Public License version 3.0
-// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
-// 
-// If you do not wish to use this file under the terms of the GPL version 3.0
-// then you may purchase a commercial license.  For more information contact
-// info at riverbankcomputing.com.
-// 
-// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-
diff --git a/sip/QtWidgets/qstyle.sip b/sip/QtWidgets/qstyle.sip
index 21ee5db..c317fff 100644
--- a/sip/QtWidgets/qstyle.sip
+++ b/sip/QtWidgets/qstyle.sip
@@ -579,6 +579,12 @@ public:
 %End
 %If (Qt_6_3_0 -)
         SH_SpinBox_SelectOnStep,
+%End
+%If (Qt_6_11_0 -)
+        SH_ComboBox_ListMouseTracking_Current,
+%End
+%If (Qt_6_11_0 -)
+        SH_ComboBox_ListMouseTracking_Active,
 %End
         SH_CustomBase,
     };
diff --git a/sip/QtWidgets/qstyleoption.sip b/sip/QtWidgets/qstyleoption.sip
index e3c2fab..7ed5474 100644
--- a/sip/QtWidgets/qstyleoption.sip
+++ b/sip/QtWidgets/qstyleoption.sip
@@ -62,7 +62,11 @@ class QStyleOption
         break;
     
     case QStyleOption::SO_MenuItem:
+    #if QT_VERSION >= 0x060b00
+        sipType = sipType_QStyleOptionMenuItemV2;
+    #else
         sipType = sipType_QStyleOptionMenuItem;
+    #endif
         break;
     
     case QStyleOption::SO_ProgressBar:
@@ -555,6 +559,27 @@ public:
     QStyleOptionMenuItem(const QStyleOptionMenuItem &other);
 };
 
+%If (Qt_6_11_0 -)
+
+class QStyleOptionMenuItemV2 : public QStyleOptionMenuItem
+{
+%TypeHeaderCode
+#include <qstyleoption.h>
+%End
+
+public:
+    enum StyleOptionVersion
+    {
+        Version,
+    };
+
+    QStyleOptionMenuItemV2();
+    QStyleOptionMenuItemV2(const QStyleOptionMenuItemV2 &other);
+    bool mouseDown;
+};
+
+%End
+
 class QStyleOptionDockWidget : public QStyleOption
 {
 %TypeHeaderCode
diff --git a/sip/QtWidgets/qwizard.sip b/sip/QtWidgets/qwizard.sip
index 4455bf8..9e0a389 100644
--- a/sip/QtWidgets/qwizard.sip
+++ b/sip/QtWidgets/qwizard.sip
@@ -76,6 +76,9 @@ public:
         HaveCustomButton2,
         HaveCustomButton3,
         NoCancelButtonOnLastPage,
+%If (Qt_6_11_0 -)
+        StretchBanner,
+%End
     };
 
     typedef QFlags<QWizard::WizardOption> WizardOptions;



More information about the Neon-commits mailing list