Home · All Classes · Modules  · QSS HELP  · QSS 案例 · VER007 HOME

QSqlRelationalTableModel Class Reference
[QtSql module]

该QSqlRelationalTableModel类提供了一个可编辑的数据模型为单个数据库表,与外键的支持。More...

继承QSqlTableModel

Types

Methods


Detailed Description

该QSqlRelationalTableModel类提供了一个可编辑的数据模型为单个数据库表,与外键的支持。

QSqlRelationalTableModel就像QSqlTableModel,但允许列要被设置为外键成其他数据库表。

左边的屏幕截图显示了纯QSqlTableModelQTableView。外键(citycountry)不会被解析为可读价值。右边的屏幕截图显示了QSqlRelationalTableModel ,与外键分解成可读的文本字符串。

下面的代码片段显示了QSqlRelationalTableModel是如何设置:

     model->setTable("employee");

     model->setRelation(2, QSqlRelation("city", "id", "name"));
     model->setRelation(3, QSqlRelation("country", "id", "name"));

setRelation( )函数调用建立两个表之间的关系。第一次调用指定表2列employee是,与字段映射外键idcity,而认为应该提出的cityname字段给用户。第二次调用是否与第3列类似的东西。

如果你使用一个读写QSqlRelationalTableModel ,你可能想使用QSqlRelationalDelegate在视图上。不同的是默认的委讬,QSqlRelationalDelegate提供了一个组合框是外键到其他表中的字段。使用类,只需调用QAbstractItemView.setItemDelegate( )与实例的视图QSqlRelationalDelegate

     QTableView *view = new QTableView;
     view->setModel(model);
     view->setItemDelegate(new QSqlRelationalDelegate(view));

sql/relationaltablemodel示例说明了如何使用QSqlRelationalTableModel与配合QSqlRelationalDelegate提供表外键的支持。

注意事项:


Type Documentation

QSqlRelationalTableModel.JoinMode

此枚举指定的模式连接两个表时要使用的类型。

Constant Value Description
QSqlRelationalTableModel.InnerJoin 0 内部联接模式,返回行的时候,至少有一个匹配两个表中。
QSqlRelationalTableModel.LeftJoin 1 LEFT JOIN模式,返回左表( table_name1 )的所有行,即使在右表( table_name2 )的结果。

这个枚举被引入或修改的Qt 4.8 。

See also QSqlRelationalTableModel.setJoinMode( ) 。


Method Documentation

QSqlRelationalTableModel.__init__ (self, QObject parent = None, QSqlDatabase db = QSqlDatabase())

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建一个空的QSqlRelationalTableModel并设置父parent与数据库连接db。如果db是无效的,默认的数据库连接将被使用。

QSqlRelationalTableModel.clear (self)

从重新实现QSqlQueryModel.clear( ) 。

QVariant QSqlRelationalTableModel.data (self, QModelIndex index, int role = Qt.DisplayRole)

从重新实现QAbstractItemModel.data( ) 。

See also setData( ) 。

bool QSqlRelationalTableModel.insertRowIntoTable (self, QSqlRecord values)

从重新实现QSqlTableModel.insertRowIntoTable( ) 。

QString QSqlRelationalTableModel.orderByClause (self)

从重新实现QSqlTableModel.orderByClause( ) 。

QSqlRelation QSqlRelationalTableModel.relation (self, int column)

返回列的关系column或无效的关系,如果没有关系设定。

See also setRelation()和QSqlRelation.isValid( ) 。

QSqlTableModel QSqlRelationalTableModel.relationModel (self, int column)

返回QSqlTableModel对象,用于访问表的量column是外键,或者0,如果没有为给定的没有关系column

返回的对象是由资QSqlRelationalTableModel

See also setRelation()和relation( ) 。

bool QSqlRelationalTableModel.removeColumns (self, int column, int count, QModelIndex parent = QModelIndex())

从重新实现QAbstractItemModel.removeColumns( ) 。

QSqlRelationalTableModel.revertRow (self, int row)

从重新实现QSqlTableModel.revertRow( ) 。

bool QSqlRelationalTableModel.select (self)

从重新实现QSqlTableModel.select( ) 。

QString QSqlRelationalTableModel.selectStatement (self)

从重新实现QSqlTableModel.selectStatement( ) 。

bool QSqlRelationalTableModel.setData (self, QModelIndex index, QVariant value, int role = Qt.EditRole)

从重新实现QAbstractItemModel.setData( ) 。

设置数据的role在用指定的项indexvalue给出。取决于编辑策略,则该值可能被应用到数据库一次,或者它可以在模型中被缓存。

返回True如果该值可以设置,或虚假的错误(例如,如果index是出界) 。

对于关系栏目,value必须是索引,而不是显示值。该指数还必须存在于被引用表,否则返回False 。

See also editStrategy( )data( )submit()和revertRow( ) 。

QSqlRelationalTableModel.setJoinMode (self, JoinMode joinMode)

设置SQL加盟模式由给定的值joinMode要显示或隐藏与NULL外键的行。

In InnerJoin模式(默认)这些行不会被显示;使用LeftJoin模式下,如果你想向他们展示。

此功能被引入Qt的4.8 。

See also QSqlRelationalTableModel.JoinMode

QSqlRelationalTableModel.setRelation (self, int column, QSqlRelation relation)

让指定的column可以通过指定的外国指数relation

例如:

     model->setTable("employee");

     model->setRelation(2, QSqlRelation("city", "id", "name"));

该setRelation ( )调用指定表2列employee是,与字段映射外键idcity,而认为应该提出的cityname字段给用户。

注:表中的主键可能不包含关系到另一个表。

See also relation( ) 。

QSqlRelationalTableModel.setTable (self, QString tableName)

从重新实现QSqlTableModel.setTable( ) 。

bool QSqlRelationalTableModel.updateRowInTable (self, int row, QSqlRecord values)

从重新实现QSqlTableModel.updateRowInTable( ) 。




PyQt 4.10.3 for X11 Copyright © Riverbank Computing Ltd and Nokia 2012 Qt 4.8.5