"""
PySide stub files generated by **IceSpringPySideStubs**

Home: https://baijifeilong.github.io/2022/01/06/ice-spring-pyside-stubs/index.html

Github: https://github.com/baijifeilong/IceSpringPySideStubs

PyPI(PySide2): https://pypi.org/project/IceSpringPySideStubs-PySide2

PyPI(PySide6): https://pypi.org/project/IceSpringPySideStubs-PySide6

PyPI(PyQt5): https://pypi.org/project/IceSpringPySideStubs-PyQt5

PyPI(PyQt6): https://pypi.org/project/IceSpringPySideStubs-PyQt6

Generated by BaiJiFeiLong@gmail.com

License: MIT
"""
import typing
from PyQt5.QtCore import *
from PyQt5 import sip


class QMetaType(sip.simplewrapper):
    """
    https://doc.qt.io/qt-5/qmetatype.html

    **Detailed Description**

    The class is used as a helper to marshall types in **QVariant**  and in
    queued signals and slots connections. It associates a type name to a type so
    that it can be created and destructed dynamically at run-time. Declare new
    types with **Q_DECLARE_METATYPE** () to make them available to **QVariant**
    and other template-based functions. Call **qRegisterMetaType** () to make
    types available to non-template based functions, such as the queued signal
    and slot connections.

    Any class or struct that has a public default constructor, a public copy
    constructor, and a public destructor can be registered.

    The following code allocates and destructs an instance of `MyClass`:

    int id = **QMetaType** ::type("MyClass");
        if (id != **QMetaType**
    ::UnknownType) {
            void *myClassPtr = **QMetaType** ::create(id);
    ...
            **QMetaType** ::destroy(id, myClassPtr);
            myClassPtr = 0;
    }

    If we want the stream operators `operator<<()` and `operator>>()` to work on
    **QVariant**  objects that store custom types, the custom type must provide
    `operator<<()` and `operator>>()` operators.

    **See also** **Q_DECLARE_METATYPE** (), **QVariant::setValue** (),
    **QVariant::value** (), and **QVariant::fromValue** ().
    """

    class TypeFlag(int):
        NeedsConstruction: QMetaType = ...
        NeedsDestruction: QMetaType = ...
        MovableType: QMetaType = ...
        PointerToQObject: QMetaType = ...
        IsEnumeration: QMetaType = ...

    class Type(int):
        UnknownType: QMetaType = ...
        Void: QMetaType = ...
        Bool: QMetaType = ...
        Int: QMetaType = ...
        UInt: QMetaType = ...
        LongLong: QMetaType = ...
        ULongLong: QMetaType = ...
        Double: QMetaType = ...
        QChar: QMetaType = ...
        QVariantMap: QMetaType = ...
        QVariantList: QMetaType = ...
        QVariantHash: QMetaType = ...
        QString: QMetaType = ...
        QStringList: QMetaType = ...
        QByteArray: QMetaType = ...
        QBitArray: QMetaType = ...
        QDate: QMetaType = ...
        QTime: QMetaType = ...
        QDateTime: QMetaType = ...
        QUrl: QMetaType = ...
        QLocale: QMetaType = ...
        QRect: QMetaType = ...
        QRectF: QMetaType = ...
        QSize: QMetaType = ...
        QSizeF: QMetaType = ...
        QLine: QMetaType = ...
        QLineF: QMetaType = ...
        QPoint: QMetaType = ...
        QPointF: QMetaType = ...
        QRegExp: QMetaType = ...
        LastCoreType: QMetaType = ...
        FirstGuiType: QMetaType = ...
        QFont: QMetaType = ...
        QPixmap: QMetaType = ...
        QBrush: QMetaType = ...
        QColor: QMetaType = ...
        QPalette: QMetaType = ...
        QIcon: QMetaType = ...
        QImage: QMetaType = ...
        QPolygon: QMetaType = ...
        QRegion: QMetaType = ...
        QBitmap: QMetaType = ...
        QCursor: QMetaType = ...
        QSizePolicy: QMetaType = ...
        QKeySequence: QMetaType = ...
        QPen: QMetaType = ...
        QTextLength: QMetaType = ...
        QTextFormat: QMetaType = ...
        QMatrix: QMetaType = ...
        QTransform: QMetaType = ...
        VoidStar: QMetaType = ...
        Long: QMetaType = ...
        Short: QMetaType = ...
        Char: QMetaType = ...
        ULong: QMetaType = ...
        UShort: QMetaType = ...
        UChar: QMetaType = ...
        Float: QMetaType = ...
        QObjectStar: QMetaType = ...
        QMatrix4x4: QMetaType = ...
        QVector2D: QMetaType = ...
        QVector3D: QMetaType = ...
        QVector4D: QMetaType = ...
        QQuaternion: QMetaType = ...
        QEasingCurve: QMetaType = ...
        QVariant: QMetaType = ...
        QUuid: QMetaType = ...
        QModelIndex: QMetaType = ...
        QPolygonF: QMetaType = ...
        SChar: QMetaType = ...
        QRegularExpression: QMetaType = ...
        QJsonValue: QMetaType = ...
        QJsonObject: QMetaType = ...
        QJsonArray: QMetaType = ...
        QJsonDocument: QMetaType = ...
        QByteArrayList: QMetaType = ...
        QPersistentModelIndex: QMetaType = ...
        QCborSimpleType: QMetaType = ...
        QCborValue: QMetaType = ...
        QCborArray: QMetaType = ...
        QCborMap: QMetaType = ...
        QColorSpace: QMetaType = ...
        User: QMetaType = ...

    class TypeFlags(sip.simplewrapper):
        @typing.overload
        def __init__(self) -> None:
            ...

        @typing.overload
        def __init__(
            self, f: typing.Union["QMetaType.TypeFlags", "QMetaType.TypeFlag"]
        ) -> None:
            ...

        @typing.overload
        def __init__(self, a0: "QMetaType.TypeFlags") -> None:
            ...

        def __hash__(self) -> int:
            ...

        def __bool__(self) -> int:
            ...

        def __invert__(self) -> "QMetaType.TypeFlags":
            ...

        def __index__(self) -> int:
            ...

        def __int__(self) -> int:
            ...

    def __init__(self, type: int = ...) -> None:
        """
        https://doc.qt.io/qt-5/qmetatype.html#QMetaType

        **QMetaType::QMetaType(const int typeId = QMetaType::UnknownType)**

        Constructs a QMetaType object that contains all information about type
        **typeId**.

        **Note:** The default parameter was added in Qt 5.15.

        This function was introduced in Qt 5.0.
        """
        ...

    def name(self) -> QByteArray:
        """
        https://doc.qt.io/qt-5/qmetatype.html#name

        **::QByteArray QMetaType::name() const**

        Returns the type name associated with this **QMetaType** , or a null
        pointer if no matching type was found. The returned pointer must not be
        deleted.

        This function was introduced in Qt 5.15.

        **See also** **typeName** ().
        """
        ...

    def id(self) -> int:
        """
        https://doc.qt.io/qt-5/qmetatype.html#id

        **int QMetaType::id() const**

        Returns id type hold by this QMetatype instance.

        This function was introduced in Qt 5.13.
        """
        ...

    @staticmethod
    def metaObjectForType(type: int) -> "QMetaObject":
        """
        https://doc.qt.io/qt-5/qmetatype.html#metaObjectForType

        **[static] const QMetaObject *QMetaType::metaObjectForType(int type )**

        returns **QMetaType::metaObject**  for **type**

        This function was introduced in Qt 5.0.

        **See also** **metaObject** ().
        """
        ...

    def isValid(self) -> bool:
        """
        https://doc.qt.io/qt-5/qmetatype.html#isValid

        **bool QMetaType::isValid() const**

        Returns `true` if this **QMetaType**  object contains valid information
        about a type, false otherwise.

        This function was introduced in Qt 5.0.
        """
        ...

    def flags(self) -> "QMetaType.TypeFlags":
        """
        https://doc.qt.io/qt-5/qmetatype.html#flags

        **QMetaType::TypeFlags QMetaType::flags() const**

        Returns flags of the type for which this **QMetaType**  instance was
        constructed.

        This function was introduced in Qt 5.0.

        **See also** **QMetaType::TypeFlags**  and **QMetaType::typeFlags** ().
        """
        ...

    @staticmethod
    def typeFlags(type: int) -> "QMetaType.TypeFlags":
        """
        https://doc.qt.io/qt-5/qmetatype.html#typeFlags

        **[static] QMetaType::TypeFlags QMetaType::typeFlags(int type )**

        Returns flags of the given **type**.

        This function was introduced in Qt 5.0.

        **See also** **QMetaType::TypeFlags** .
        """
        ...

    @typing.overload
    @staticmethod
    def isRegistered(type: int) -> bool:
        """
        https://doc.qt.io/qt-5/qmetatype.html#isRegistered

        **[static] bool QMetaType::isRegistered(int type )**

        Returns `true` if the datatype with ID **type** is registered; otherwise
        returns `false`.

        **See also** **type** (), **typeName** (), and **Type** .
        """
        ...

    @typing.overload
    def isRegistered(self) -> bool:
        """
        https://doc.qt.io/qt-5/qmetatype.html#isRegistered-1

        **bool QMetaType::isRegistered() const**

        Returns `true` if this **QMetaType**  object contains valid information
        about a type, false otherwise.

        This function was introduced in Qt 5.0.
        """
        ...

    @staticmethod
    def typeName(type: int) -> str:
        """
        https://doc.qt.io/qt-5/qmetatype.html#typeName

        **[static] const char *QMetaType::typeName(int typeId )**

        Returns the type name associated with the given **typeId** , or a null
        pointer if no matching type was found. The returned pointer must not be
        deleted.

        **See also** **type** (), **isRegistered** (), **Type** , and **name**
        ().
        """
        ...

    @staticmethod
    def type(typeName: str) -> int:
        """
        https://doc.qt.io/qt-5/qmetatype.html#type

        **[static] int QMetaType::type(const char * typeName )**

        Returns a handle to the type called **typeName** , or
        **QMetaType::UnknownType**  if there is no such type.

        **See also** **isRegistered** (), **typeName** (), and **Type** .
        """
        ...
