diff options
author | Renato Araujo Oliveira Filho <renato.araujo@kdab.com> | 2025-04-17 11:20:02 -0300 |
---|---|---|
committer | Renato Araujo Oliveira Filho <renato.araujo@kdab.com> | 2025-04-23 10:12:13 -0300 |
commit | caa9d339c3ba96879ae5972b08787506ec36d92b (patch) | |
tree | 4be4c695f2eff0654ccd1745b5c5a9d4d2320a65 /sources/pyside6/libpyside/pysideqenum.cpp | |
parent | 2f55adcea4b5d058bb600c2f2cc78106c93e10b8 (diff) |
Fix QMetaEnum conversions into QVariant
Make sure to store QtEnums in QVariant when the enum has a metatype.
Fixes: PYSIDE-3084
Change-Id: I94b89f89e6fb3c58560325f2a6843a5260d86557
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/pyside6/libpyside/pysideqenum.cpp')
-rw-r--r-- | sources/pyside6/libpyside/pysideqenum.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/sources/pyside6/libpyside/pysideqenum.cpp b/sources/pyside6/libpyside/pysideqenum.cpp index e922c2d24..8fc33d5db 100644 --- a/sources/pyside6/libpyside/pysideqenum.cpp +++ b/sources/pyside6/libpyside/pysideqenum.cpp @@ -10,6 +10,8 @@ #include <map> +#include <QtCore/qmetatype.h> + /////////////////////////////////////////////////////////////// // // PYSIDE-957: Create QEnum dynamically from Python Enum @@ -193,6 +195,21 @@ std::vector<PyObject *> resolveDelayedQEnums(PyTypeObject *containerType) return result; } +QByteArray getTypeName(PyTypeObject *type) +{ + if (!Shiboken::Enum::checkType(type)) + return {}; + + Shiboken::AutoDecRef qualName(PyObject_GetAttr(reinterpret_cast<PyObject *>(type), + Shiboken::PyMagicName::qualname())); + QByteArray result = Shiboken::String::toCString(qualName.object()); + result.replace(".", "::"); + + const auto metaType = QMetaType::fromName(result); + return metaType.isValid() && metaType.flags().testFlag(QMetaType::IsEnumeration) + ? result : QByteArray{}; +} + } // namespace Shiboken::Enum // |