diff options
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 // |