"""
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

Generated by BaiJiFeiLong@gmail.com

Licence: GPLv3
"""
"""
This file contains the exact signatures for all functions in module
PySide6.QtCore, except for defaults which are replaced by "...".
"""
from typing import Optional, Union, overload
import PySide6.QtCore

bytes = str


class QAbstractListModel(PySide6.QtCore.QAbstractItemModel):
    """
    https://doc.qt.io/qt-6/qabstractlistmodel.html

    **Detailed Description**

    QAbstractListModel provides a standard interface for models that represent
    their data as a simple non-hierarchical sequence of items. It is not used
    directly, but must be subclassed.

    Since the model provides a more specialized interface than
    **QAbstractItemModel** , it is not suitable for use with tree views; you
    will need to subclass **QAbstractItemModel**  if you want to provide a model
    for that purpose. If you need to use a number of list models to manage data,
    it may be more appropriate to subclass **QAbstractTableModel**  instead.

    Simple models can be created by subclassing this class and implementing the
    minimum number of required functions. For example, we could implement a
    simple read-only **QStringList** -based model that provides a list of
    strings to a **QListView**  widget. In such a case, we only need to
    implement the **rowCount** () function to return the number of items in the
    list, and the **data** () function to retrieve items from the list.

    Since the model represents a one-dimensional structure, the **rowCount** ()
    function returns the total number of items in the model. The **columnCount**
    () function is implemented for interoperability with all kinds of views, but
    by default informs views that the model contains only one column.

    **Subclassing**

    When subclassing QAbstractListModel, you must provide implementations of the
    **rowCount** () and **data** () functions. Well behaved models also provide
    a **headerData** () implementation.

    If your model is used within QML and requires roles other than the default
    ones provided by the **roleNames** () function, you must override it.

    For editable list models, you must also provide an implementation of
    **setData** (), and implement the **flags** () function so that it returns a
    value containing **Qt::ItemIsEditable** .

    Note that QAbstractListModel provides a default implementation of
    **columnCount** () that informs views that there is only a single column of
    items in this model.

    Models that provide interfaces to resizable list-like data structures can
    provide implementations of **insertRows** () and **removeRows** (). When
    implementing these functions, it is important to call the appropriate
    functions so that all connected views are aware of any changes:

    * An **insertRows** () implementation must call **beginInsertRows** ()
    **before** inserting new rows into the data structure, and it must call
    **endInsertRows** () **immediately afterwards**.
      * A **removeRows** ()
    implementation must call **beginRemoveRows** () **before** the rows are
    removed from the data structure, and it must call **endRemoveRows** ()
    **immediately afterwards**.

    **Note:** Some general guidelines for subclassing models are available in
    the **Model Subclassing Reference** .

    **See also** **Model Classes** , **Model Subclassing Reference** ,
    **QAbstractItemView** , **QAbstractTableModel** , and **Item Views Puzzle
    Example** .
    """

    def __init__(self, parent: Optional[PySide6.QtCore.QObject] = ...) -> None:
        """
        https://doc.qt.io/qt-6/qabstractlistmodel.html#QAbstractListModel

        **QAbstractListModel::QAbstractListModel(QObject * parent = nullptr)**

        Constructs an abstract list model with the given **parent**.
        """
        ...

    def columnCount(
        self,
        parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> int:
        ...

    def dropMimeData(
        self,
        data: PySide6.QtCore.QMimeData,
        action: PySide6.QtCore.Qt.DropAction,
        row: int,
        column: int,
        parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> bool:
        """
        https://doc.qt.io/qt-6/qabstractlistmodel.html#dropMimeData

        **[override virtual] bool QAbstractListModel::dropMimeData(const
        QMimeData * data , Qt::DropAction action , int row , int column , const
        QModelIndex & parent )**

        Reimplements: **QAbstractItemModel::dropMimeData** (const QMimeData
        *data, Qt::DropAction action, int row, int column, const QModelIndex
        &parent).
        """
        ...

    def flags(
        self,
        index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> PySide6.QtCore.Qt.ItemFlags:
        """
        https://doc.qt.io/qt-6/qabstractlistmodel.html#flags

        **[override virtual] Qt::ItemFlags QAbstractListModel::flags(const
        QModelIndex & index ) const**

        Reimplements: **QAbstractItemModel::flags(const QModelIndex &index)
        const** .
        """
        ...

    def hasChildren(
        self,
        parent: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> bool:
        ...

    def index(
        self,
        row: int,
        column: int = ...,
        parent: Union[
            PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex
        ] = ...,
    ) -> PySide6.QtCore.QModelIndex:
        """
        https://doc.qt.io/qt-6/qabstractlistmodel.html#index

        **[override virtual] QModelIndex QAbstractListModel::index(int row , int
        column = 0, const QModelIndex & parent = QModelIndex()) const**

        Reimplements: **QAbstractItemModel::index(int row, int column, const
        QModelIndex &parent) const** .

        Returns the index of the data in **row** and **column** with **parent**.

        **See also** **parent** ().
        """
        ...

    @overload
    def parent(self) -> PySide6.QtCore.QObject:
        ...

    @overload
    def parent(
        self,
        child: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> PySide6.QtCore.QModelIndex:
        ...

    def sibling(
        self,
        row: int,
        column: int,
        idx: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> PySide6.QtCore.QModelIndex:
        """
        https://doc.qt.io/qt-6/qabstractlistmodel.html#sibling

        **[override virtual] QModelIndex QAbstractListModel::sibling(int row ,
        int column , const QModelIndex & idx ) const**

        Reimplements: **QAbstractItemModel::sibling(int row, int column, const
        QModelIndex &index) const** .
        """
        ...
