"""
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 PyQt6.QtCore import *


class QAbstractListModel(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: typing.Optional[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 sibling(self, row: int, column: int, idx: QModelIndex) -> 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** .
        """
        ...

    def parent(self) -> QObject:
        ...

    def flags(self, index: QModelIndex) -> Qt.ItemFlag:
        """
        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 dropMimeData(
        self,
        data: "QMimeData",
        action: Qt.DropAction,
        row: int,
        column: int,
        parent: QModelIndex,
    ) -> 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 index(
        self, row: int, column: int = ..., parent: QModelIndex = ...
    ) -> 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** ().
        """
        ...
