"""
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 QAbstractTableModel(PySide6.QtCore.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: Optional[PySide6.QtCore.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 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/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 flags(
        self,
        index: Union[PySide6.QtCore.QModelIndex, PySide6.QtCore.QPersistentModelIndex],
    ) -> PySide6.QtCore.Qt.ItemFlags:
        """
        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 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/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** ().
        """
        ...

    @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/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** .
        """
        ...
