"""
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 QAbstractTableModel(QAbstractItemModel):
    """
    https://doc.qt.io/qt-6/qabstracttablemodel.html

    **Detailed Description**

    QAbstractTableModel provides a standard interface for models that represent
    their data as a two-dimensional array 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,
    although it can be used to provide data to a **QListView** . If you need to
    represent a simple list of items, and only need a model to contain a single
    column of data, subclassing the **QAbstractListModel**  may be more
    appropriate.

    The **rowCount** () and **columnCount** () functions return the dimensions
    of the table. To retrieve a model index corresponding to an item in the
    model, use **index** () and provide only the row and column numbers.

    **Subclassing**

    When subclassing QAbstractTableModel, you must implement **rowCount** (),
    **columnCount** (), and **data** (). Default implementations of the
    **index** () and **parent** () functions are provided by
    QAbstractTableModel. Well behaved models will also implement **headerData**
    ().

    Editable models need to implement **setData** (), and implement **flags** ()
    to return a value containing **Qt::ItemIsEditable** .

    Models that provide interfaces to resizable data structures can provide
    implementations of **insertRows** (), **removeRows** (), **insertColumns**
    (), and **removeColumns** (). 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**.
      * An **insertColumns** ()
    implementation must call **beginInsertColumns** () **before** inserting new
    columns into the data structure, and it must call **endInsertColumns** ()
    **immediately afterwards**.
      * A **removeRows** () implementation must call
    **beginRemoveRows** () **before** the rows are removed from the data
    structure, and it must call **endRemoveRows** () **immediately afterwards**.
    * A **removeColumns** () implementation must call **beginRemoveColumns** ()
    **before** the columns are removed from the data structure, and it must call
    **endRemoveColumns** () **immediately afterwards**.

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

    **See also** **Model Classes** , **QAbstractItemModel** ,
    **QAbstractListModel** , and **Pixelator Example** .
    """

    def __init__(self, parent: typing.Optional[QObject] = ...) -> None:
        """
        https://doc.qt.io/qt-6/qabstracttablemodel.html#QAbstractTableModel

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

        Constructs an abstract table model for the given **parent**.
        """
        ...

    def sibling(self, row: int, column: int, idx: QModelIndex) -> QModelIndex:
        """
        https://doc.qt.io/qt-6/qabstracttablemodel.html#sibling

        **[override virtual] QModelIndex QAbstractTableModel::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/qabstracttablemodel.html#flags

        **[override virtual] Qt::ItemFlags QAbstractTableModel::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/qabstracttablemodel.html#dropMimeData

        **[override virtual] bool QAbstractTableModel::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/qabstracttablemodel.html#index

        **[override virtual] QModelIndex QAbstractTableModel::index(int row ,
        int column , 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** ().
        """
        ...
