[QtGui module]
该QStandardItemModel类提供用于存储自定义数据的通用模型。More…
Methods
__init__ (self, QObject parent = None)
__init__ (self, int rows, int columns, QObject parent = None)
appendColumn (self, list-of-QStandardItem items)
appendRow (self, list-of-QStandardItem items)
appendRow (self, QStandardItem aitem)
clear (self)
int columnCount (self, QModelIndex parent = QModelIndex())
QVariant data (self, QModelIndex index, int role = Qt.DisplayRole)
bool dropMimeData (self, QMimeData data, Qt.DropAction action, int row, int column, QModelIndex parent)
list-of-QStandardItem findItems (self, QString text, Qt.MatchFlags flags = Qt.MatchExactly, int column = 0)
Qt.ItemFlags flags (self, QModelIndex index)
bool hasChildren (self, QModelIndex parent = QModelIndex())
QVariant headerData (self, int section, Qt.Orientation orientation, int role = Qt.DisplayRole)
QStandardItem horizontalHeaderItem (self, int column)
QModelIndex index (self, int row, int column, QModelIndex parent = QModelIndex())
QModelIndex indexFromItem (self, QStandardItem item)
insertColumn (self, int column, list-of-QStandardItem items)
bool insertColumn (self, int column, QModelIndex parent = QModelIndex())
bool insertColumns (self, int column, int count, QModelIndex parent = QModelIndex())
insertRow (self, int row, list-of-QStandardItem items)
insertRow (self, int arow, QStandardItem aitem)
bool insertRow (self, int row, QModelIndex parent = QModelIndex())
bool insertRows (self, int row, int count, QModelIndex parent = QModelIndex())
QStandardItem invisibleRootItem (self)
QStandardItem item (self, int row, int column = 0)
dict-of-int-QVariant itemData (self, QModelIndex index)
QStandardItem itemFromIndex (self, QModelIndex index)
QStandardItem itemPrototype (self)
QMimeData mimeData (self, list-of-QModelIndex indexes)
QStringList mimeTypes (self)
QModelIndex parent (self, QModelIndex child)
QObject parent (self)
bool removeColumns (self, int column, int count, QModelIndex parent = QModelIndex())
bool removeRows (self, int row, int count, QModelIndex parent = QModelIndex())
int rowCount (self, QModelIndex parent = QModelIndex())
setColumnCount (self, int columns)
bool setData (self, QModelIndex index, QVariant value, int role = Qt.EditRole)
bool setHeaderData (self, int section, Qt.Orientation orientation, QVariant value, int role = Qt.EditRole)
setHorizontalHeaderItem (self, int column, QStandardItem item)
setHorizontalHeaderLabels (self, QStringList labels)
setItem (self, int row, int column, QStandardItem item)
setItem (self, int arow, QStandardItem aitem)
bool setItemData (self, QModelIndex index, dict-of-int-QVariant roles)
setItemPrototype (self, QStandardItem item)
setRowCount (self, int rows)
setSortRole (self, int role)
setVerticalHeaderItem (self, int row, QStandardItem item)
setVerticalHeaderLabels (self, QStringList labels)
sort (self, int column, Qt.SortOrder order = Qt.AscendingOrder)
int sortRole (self)
Qt.DropActions supportedDropActions (self)
list-of-QStandardItem takeColumn (self, int column)
QStandardItem takeHorizontalHeaderItem (self, int column)
QStandardItem takeItem (self, int row, int column = 0)
list-of-QStandardItem takeRow (self, int row)
QStandardItem takeVerticalHeaderItem (self, int row)
QStandardItem verticalHeaderItem (self, int row)
Qt Signals
void itemChanged (QStandardItem *)
Detailed Description
该QStandardItemModel类提供用于存储自定义数据的通用模型。
QStandardItemModel可以作为标准的Qt数据类型的存储库。它是一Model/View Classes并且是Qt的一部分model/view框架。
QStandardItemModel提供了一个典型的项目为基础的方法与模型的工作。在QStandardItemModel的项目是由提供QStandardItem。
QStandardItemModel实现QAbstractItemModel接口,这意味着,该模型可以用来提供数据支持该接口(如任何视图QListView,QTableView和QTreeView,和你自己的自定义视图) 。对于性能和灵活性,你可能要继承QAbstractItemModel提供不同类型的数据存储库的支持。例如,本QDirModel(obsolete)提供了一个模型界面到底层的文件系统。
当你想要一个列表或树,你可以创建一个空的QStandardItemModel和使用appendRow( )将项目添加到模型中,并item()来存取项目。如果你的模型是一个表,通常需要传递的表的尺寸的QStandardItemModel的构造和使用setItem( )来定位的项目到表中。您也可以使用setRowCount()和setColumnCount()来改变模型的尺寸。要插入的项目,使用insertRow()或insertColumn( ) ,并删除项目,使用removeRow()或removeColumn( ) 。
你可以设置你的模型的标题与标籤setHorizontalHeaderLabels()和setVerticalHeaderLabels( ) 。
您可以在模型中的项目与搜索findItems() ,并且模型通过调用排序sort( ) 。
Call clear()从模型中删除所有项目。
QStandardItemModel的使用示例创建一个表:
QStandardItemModel model(4, 4);
for (int row = 0; row < 4; ++row) {
for (int column = 0; column < 4; ++column) {
[QStandardItem](docs_qstandarditem.html) *item = new [QStandardItem](docs_qstandarditem.html)([QString](docs_qstring.html)("row %0, column %1").arg(row).arg(column));
model.setItem(row, column, item);
}
}
QStandardItemModel的使用示例创建树:
QStandardItemModel model;
[QStandardItem](docs_qstandarditem.html) *parentItem = model.invisibleRootItem();
for (int i = 0; i < 4; ++i) {
[QStandardItem](docs_qstandarditem.html) *item = new [QStandardItem](docs_qstandarditem.html)([QString](docs_qstring.html)("item %0").arg(i));
parentItem->appendRow(item);
parentItem = item;
}
设置模型的视图后,你通常需要响应用户操作,如被点击的项目。由于QAbstractItemView提供QModelIndex为基础的信号和功能,你需要一种方法来获得QStandardItem对应于一个给定的QModelIndex,反之亦然。itemFromIndex()和indexFromItem( )提供这种映射。典型的用法itemFromIndex()包括:获取该项目的当前索引处的一个视图,并获得对应于由一个执行一个索引的资料QAbstractItemView信号,如QAbstractItemView.clicked( ) 。首先,你的观点的信号连接到您的班级插槽:
[QTreeView](docs_qtreeview.html) *treeView = new [QTreeView](docs_qtreeview.html)(this);
treeView->setModel(myStandardItemModel);
connect(treeView, SIGNAL(clicked([QModelIndex](docs_qmodelindex.html))),
this, SLOT(clicked([QModelIndex](docs_qmodelindex.html))));
当您收到信号,你叫itemFromIndex( )在给定的模型索引来获得一个指向文件:
void MyWidget.clicked(const [QModelIndex](docs_qmodelindex.html) &index)
{
[QStandardItem](docs_qstandarditem.html) *item = myStandardItemModel->itemFromIndex(index);
// Do stuff with the item ...
}
相反,你必须获得QModelIndex当你要调用一个模型/视图函数,它接受一个索引作为参数的项目。您可以使用该模型的两种获取索引indexFromItem()函数,或等价地,通过调用QStandardItem.index():
treeView->scrollTo(item->index());
你当然不需要使用的项目为基础的方法,你可以代替完全依赖QAbstractItemModel接口与模型的工作,或者在两者的组合中适当的时候。
Method Documentation
QStandardItemModel.__init__ (self, QObject parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的项目模型,给定parent。
QStandardItemModel.__init__ (self, int rows, int columns, QObject parent = None)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
构造一个新的项目模型,最初有rows行和columns列,并且具有给定parent。
QStandardItemModel.appendColumn (self, list-of-QStandardItem items)
该items说法有它的所有权转移给Qt的。
含追加一列items。如果有必要,该行数将增加至大小items。
这个函数中引入了Qt 4.2中。
See also insertColumn()和appendRow( ) 。
QStandardItemModel.appendRow (self, list-of-QStandardItem items)
该items说法有它的所有权转移给Qt的。
含追加的行items。如果需要的话,列计数值增加到的大小items。
这个函数中引入了Qt 4.2中。
See also insertRow()和appendColumn( ) 。
QStandardItemModel.appendRow (self, QStandardItem aitem)
该aitem说法有它的所有权转移给Qt的。
这是一个重载函数。
当建立一个列表,或者只有一列树,该功能提供了一种方便的方式来追加一个新item。
这个函数中引入了Qt 4.2中。
QStandardItemModel.clear (self)
从模型中删除所有项目(包括头项) ,并设置行数和列数为零。
See also removeColumns()和removeRows( ) 。
int QStandardItemModel.columnCount (self, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.columnCount( ) 。
See also setColumnCount( ) 。
QVariant QStandardItemModel.data (self, QModelIndex index, int role = Qt.DisplayRole)
从重新实现QAbstractItemModel.data( ) 。
See also setData( ) 。
bool QStandardItemModel.dropMimeData (self, QMimeData data, Qt.DropAction action, int row, int column, QModelIndex parent)
从重新实现QAbstractItemModel.dropMimeData( ) 。
list-of-QStandardItem QStandardItemModel.findItems (self, QString text, Qt.MatchFlags flags = Qt.MatchExactly, int column = 0)
返回匹配给定的项目清单text,使用给定的flags在给定的column。
这个函数中引入了Qt 4.2中。
Qt.ItemFlags QStandardItemModel.flags (self, QModelIndex index)
从重新实现QAbstractItemModel.flags( ) 。
bool QStandardItemModel.hasChildren (self, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.hasChildren( ) 。
QVariant QStandardItemModel.headerData (self, int section, Qt.Orientation orientation, int role = Qt.DisplayRole)
从重新实现QAbstractItemModel.headerData( ) 。
See also setHeaderData( ) 。
QStandardItem QStandardItemModel.horizontalHeaderItem (self, int column)
[
返回水平标题项为column如果已经设置,否则返回0 。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also setHorizontalHeaderItem()和verticalHeaderItem( ) 。
QModelIndex QStandardItemModel.index (self, int row, int column, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.index( ) 。
QModelIndex QStandardItemModel.indexFromItem (self, QStandardItem item)
返回QModelIndex用给定的相关联item。
当您要执行需要的操作使用此功能QModelIndex该项目时,如QAbstractItemView.scrollTo( ) 。QStandardItem.index( )是作为方便,它等效于调用这个函数。
这个函数中引入了Qt 4.2中。
See also itemFromIndex()和QStandardItem.index( ) 。
QStandardItemModel.insertColumn (self, int column, list-of-QStandardItem items)
该items说法有它的所有权转移给Qt的。
在插入一列column containing items。如果有必要,该行数将增加至大小items。
这个函数中引入了Qt 4.2中。
See also takeColumn( )appendColumn()和insertRow( ) 。
bool QStandardItemModel.insertColumn (self, int column, QModelIndex parent = QModelIndex())
给定前插入一列column中的子项parent规定。返回True如果插入的列,否则返回False 。
See also insertColumns( )insertRow()和removeColumn( ) 。
bool QStandardItemModel.insertColumns (self, int column, int count, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.insertColumns( ) 。
QStandardItemModel.insertRow (self, int row, list-of-QStandardItem items)
该items说法有它的所有权转移给Qt的。
插入一个一行row containing items。如果需要的话,列计数值增加到的大小items。
这个函数中引入了Qt 4.2中。
See also takeRow( )appendRow()和insertColumn( ) 。
QStandardItemModel.insertRow (self, int arow, QStandardItem aitem)
该aitem说法有它的所有权转移给Qt的。
给定前插入一个单行row中的子项parent规定。返回True如果被插入的行,否则返回False 。
See also insertRows( )insertColumn()和removeRow( ) 。
bool QStandardItemModel.insertRow (self, int row, QModelIndex parent = QModelIndex())
这是一个重载函数。
插入一个一行row containing item。
当建立一个列表,或者只有一列树,该功能提供了一种方便的方式来追加新的单一项目。
这个函数中引入了Qt 4.2中。
bool QStandardItemModel.insertRows (self, int row, int count, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.insertRows( ) 。
QStandardItem QStandardItemModel.invisibleRootItem (self)
[
返回模型的无形之根项目。
](docs_qstandarditem.html)
看不见的根项目,通过提供对模型的顶层项目QStandardItem的API ,从而可以写,可以治疗以统一的方式顶级项目及其子女的功能,例如,涉及树模型递归函数。
Note:调用index()在QStandardItem从这个功能检索的对象是无效的。
这个函数中引入了Qt 4.2中。
QStandardItem QStandardItemModel.item (self, int row, int column = 0)
[
返回的项目为给定的row和column如果已经设置,否则返回0 。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also setItem( )takeItem()和itemFromIndex( ) 。
dict-of-int-QVariant QStandardItemModel.itemData (self, QModelIndex index)
从重新实现QAbstractItemModel.itemData( ) 。
See also setItemData( ) 。
QStandardItem QStandardItemModel.itemFromIndex (self, QModelIndex index)
返回一个指针QStandardItem用给定的相关联index。
调用此函数通常是最初的一步处理时,QModelIndex从一个基于视图的信号,如QAbstractItemView.activated( ) 。在您的插槽,你叫itemFromIndex ( ) ,与QModelIndex由信号作为参数进行,得到一个指向相应QStandardItem。
注意,这个函数会懒洋洋地创建索引项(使用itemPrototype( ) ) ,并将其设置在父项的子表,如果没有项目已经存在该索引。
If index是一个无效的指标,这个函数返回0 。
这个函数中引入了Qt 4.2中。
See also indexFromItem( ) 。
QStandardItem QStandardItemModel.itemPrototype (self)
返回产品原型所使用的模型。该模型使用的项目原型作为项目的工厂时,它需要构建随需应变的新项目(例如,当一个视图或项目委讬调用setData())。
这个函数中引入了Qt 4.2中。
See also setItemPrototype( ) 。
QMimeData QStandardItemModel.mimeData (self, list-of-QModelIndex indexes)
[
该QMimeData结果
](docs_qmimedata.html)
从重新实现QAbstractItemModel.mimeData( ) 。
QStringList QStandardItemModel.mimeTypes (self)
从重新实现QAbstractItemModel.mimeTypes( ) 。
QModelIndex QStandardItemModel.parent (self, QModelIndex child)
从重新实现QAbstractItemModel.parent( ) 。
QObject QStandardItemModel.parent (self)
[
bool QStandardItemModel.removeColumns (self, int column, int count, QModelIndex parent = QModelIndex())
](docs_qobject.html)
从重新实现QAbstractItemModel.removeColumns( ) 。
bool QStandardItemModel.removeRows (self, int row, int count, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.removeRows( ) 。
int QStandardItemModel.rowCount (self, QModelIndex parent = QModelIndex())
从重新实现QAbstractItemModel.rowCount( ) 。
See also setRowCount( ) 。
QStandardItemModel.setColumnCount (self, int columns)
载列在这个模型数columns。如果它小于columnCount() ,在不需要的列中的数据将被丢弃。
这个函数中引入了Qt 4.2中。
See also columnCount()和setRowCount( ) 。
bool QStandardItemModel.setData (self, QModelIndex index, QVariant value, int role = Qt.EditRole)
从重新实现QAbstractItemModel.setData( ) 。
See also data( ) 。
bool QStandardItemModel.setHeaderData (self, int section, Qt.Orientation orientation, QVariant value, int role = Qt.EditRole)
从重新实现QAbstractItemModel.setHeaderData( ) 。
See also headerData( ) 。
QStandardItemModel.setHorizontalHeaderItem (self, int column, QStandardItem item)
该item说法有它的所有权转移给Qt的。
设置水平标题项为column至item。该模型考虑了项目的所有权。如果需要的话,列计数增加,以适应产品。以前的标题项(如果有的话)将被删除。
这个函数中引入了Qt 4.2中。
See also horizontalHeaderItem( )setHorizontalHeaderLabels()和setVerticalHeaderItem( ) 。
QStandardItemModel.setHorizontalHeaderLabels (self, QStringList labels)
设置使用水平标题标籤labels。如果需要的话,列计数值增加到的大小labels。
这个函数中引入了Qt 4.2中。
See also setHorizontalHeaderItem( ) 。
QStandardItemModel.setItem (self, int row, int column, QStandardItem item)
该item说法有它的所有权转移给Qt的。
设置项对于给定的row和column至item。该模型考虑了项目的所有权。如果必要,行数和列数都增加,以适应产品。在给定位置(如果有的话)上一个项目被删除。
这个函数中引入了Qt 4.2中。
See also item( ) 。
QStandardItemModel.setItem (self, int arow, QStandardItem aitem)
该aitem说法有它的所有权转移给Qt的。
这是一个重载函数。
bool QStandardItemModel.setItemData (self, QModelIndex index, dict-of-int-QVariant roles)
从重新实现QAbstractItemModel.setItemData( ) 。
See also itemData( ) 。
QStandardItemModel.setItemPrototype (self, QStandardItem item)
该item说法有它的所有权转移给Qt的。
设置项的原型模型的指定的item。该模型采用原型的所有权。
该项目的原型作为一个QStandardItem工厂,所依托的QStandardItem.clone()函数。提供自己的原型,子类QStandardItem,重新实现QStandardItem.clone()和set原型是您的自定义类的实例。每当QStandardItemModel需要按需创建一个项目(例如,视图或项目委讬呼叫时setData( ) ) ) ,该新项目将是你的自定义类的实例。
这个函数中引入了Qt 4.2中。
See also itemPrototype()和QStandardItem.clone( ) 。
QStandardItemModel.setRowCount (self, int rows)
设定排在这个模型数rows。如果它小于rowCount() ,在不需要的行中的数据将被丢弃。
这个函数中引入了Qt 4.2中。
See also rowCount()和setColumnCount( ) 。
QStandardItemModel.setSortRole (self, int role)
QStandardItemModel.setVerticalHeaderItem (self, int row, QStandardItem item)
该item说法有它的所有权转移给Qt的。
设置垂直标题项为row至item。该模型考虑了项目的所有权。如果必要,行计数增加,以适应产品。以前的标题项(如果有的话)将被删除。
这个函数中引入了Qt 4.2中。
See also verticalHeaderItem( )setVerticalHeaderLabels()和setHorizontalHeaderItem( ) 。
QStandardItemModel.setVerticalHeaderLabels (self, QStringList labels)
设置使用垂直标题标籤labels。如果有必要,该行数将增加至大小labels。
这个函数中引入了Qt 4.2中。
See also setVerticalHeaderItem( ) 。
QStandardItemModel.sort (self, int column, Qt.SortOrder order = Qt.AscendingOrder)
从重新实现QAbstractItemModel.sort( ) 。
int QStandardItemModel.sortRole (self)
Qt.DropActions QStandardItemModel.supportedDropActions (self)
从重新实现QAbstractItemModel.supportedDropActions( ) 。
QStandardItemModel支持复制和移动两种。
list-of-QStandardItem QStandardItemModel.takeColumn (self, int column)
该list-of-QStandardItem结果
删除给定的column不删除的列项,并返回指针列表的删除的项。该模型释放的物品的所有权。在尚未设定的列项,列表中的相应指针将是0 。
这个函数中引入了Qt 4.2中。
See also takeRow( ) 。
QStandardItem QStandardItemModel.takeHorizontalHeaderItem (self, int column)
[
该QStandardItem结果
删除在水平标题项column从标题而不删除它,并返回一个指向的项目。该模型发布该项目的所有权。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also horizontalHeaderItem()和takeVerticalHeaderItem( ) 。
QStandardItem QStandardItemModel.takeItem (self, int row, int column = 0)
[
该QStandardItem结果
删除的项目(row,column)而不删除它。该模型发布该项目的所有权。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also item( )takeRow()和takeColumn( ) 。
list-of-QStandardItem QStandardItemModel.takeRow (self, int row)
该list-of-QStandardItem结果
删除给定的row不删除的行项目,并返回指针列表的删除的项目。该模型释放的物品的所有权。对于没有被设置的行中的项目,列表中的相应指针将是0 。
这个函数中引入了Qt 4.2中。
See also takeColumn( ) 。
QStandardItem QStandardItemModel.takeVerticalHeaderItem (self, int row)
[
该QStandardItem结果
删除在垂直标题项row从标题而不删除它,并返回一个指向的项目。该模型发布该项目的所有权。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also verticalHeaderItem()和takeHorizontalHeaderItem( ) 。
QStandardItem QStandardItemModel.verticalHeaderItem (self, int row)
[
返回行的垂直标题项row如果已经设置,否则返回0 。
这个函数中引入了Qt 4.2中。
](docs_qstandarditem.html)
See also setVerticalHeaderItem()和horizontalHeaderItem( ) 。
Qt Signal Documentation
void itemChanged (QStandardItem *)
这是该信号的默认超载。
这个信号被发射时的数据item已经改变。
这个函数中引入了Qt 4.2中。