'Q_DECLARE_METATYPE' is not defined

Charles peacech at gmail.com
Thu Jul 25 15:07:33 BST 2024


You can't. You need to create a custom QStyledItemDelegate and use
QStyledItemDelegate.createEditor instead.

On Thu, Jul 25, 2024 at 8:29 PM Tassos Tzavellas <tassos.tzavellas at ansys.com>
wrote:

> Hi,
>
> I want to use the QItemEditorFactory to register a CustomEditor class for
> my own CustomType. The official Qt documentation
> <https://doc.qt.io/qtforpython-6/overviews/custom-types.html> dictates
> the use of either of these two macros for registering custom types to the
> Qt Meta type system (and subsequent use in the factory):
> Q_DECLARE_METATYPE and qRegisterMetaType.
>
> Since I don't care about signals/slots mechanism, the first macro is the
> obvious choice.
>
> From the study of the PyQt documentation
> <https://www.riverbankcomputing.com/static/Docs/PyQt5/api/qtcore/qmetatype.html>,
> this macro should be supported and probably it should exist by importing
> the PyQt5.QtCore.QMetaType module.
>
> However, that is not the case. My python interpreter (version 3.9.7) gives
> me an error : NameError: name 'Q_DECLARE_METATYPE' is not defined.
>
> Here is a snippet from my source code:
>
> from PyQt5.QtCore import QMetaType
> class CustomType:
>     def __init__(self) -> None:
>         pass
>
> Q_DECLARE_METATYPE(MyClass)
>
>
> Naturally, I tried invoking the qRegisterMetaType as well, with similar
> results. What am I doing wrong? Do these macros exist in PyQt5 (version
> 5.15.6)
>
> Thank you in advance,
> Tassos
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20240725/369d331d/attachment.htm>


More information about the PyQt mailing list