QxOrm  1.3.2
C++ Object Relational Mapping library

qx::QxModel<T> : all classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views) More...

#include <QxModel.h>

Inheritance diagram for qx::QxModel< T >:
qx::IxModel qx::QxModelService< T, S >

List of all members.

Public Types

enum  { qx_is_valid = qx::trait::is_qx_registered<T>::value }
typedef boost::shared_ptr< T > type_ptr
typedef
qx::trait::get_primary_key< T >
::type 
type_primary_key
typedef qx::QxCollection
< type_primary_key, type_ptr
type_collection

Public Member Functions

 QxModel (QObject *parent=0)
 QxModel (qx::IxModel *other, QObject *parent)
virtual ~QxModel ()
virtual QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
virtual bool insertRows (int row, int count, const QModelIndex &parent=QModelIndex())
virtual long qxCount (const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)
 Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.
virtual QSqlError qxCount (long &lCount, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)
 Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.
virtual QSqlError qxFetchById (const QVariant &id, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Clear the model and fetch an object (retrieve all its properties) of type T (registered into QxOrm context) mapped to a table in the database.
virtual QSqlError qxFetchAll (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database.
virtual QSqlError qxFetchByQuery (const qx::QxSqlQuery &query, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database and filtered by a user SQL query.
virtual QSqlError qxFetchRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Get an item in the model at line row and fetch all its properties mapped to a table in the database, then all views attached to this model are automatically updated.
virtual QSqlError qxInsert (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Insert all items in the model into database.
virtual QSqlError qxInsertRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Insert an item of the model at line row into database.
virtual QSqlError qxUpdate (const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Update all items in the model into database.
virtual QSqlError qxUpdateRow (int row, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Update an item of the model at line row into database.
virtual QSqlError qxSave (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Save all items (insert or update) in the model into database.
virtual QSqlError qxSaveRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)
 Save an item of the model at line row into database.
virtual QSqlError qxDeleteById (const QVariant &id, QSqlDatabase *pDatabase=NULL)
 Delete a line of a table (database) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.
virtual QSqlError qxDeleteAll (QSqlDatabase *pDatabase=NULL)
 Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.
virtual QSqlError qxDeleteByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.
virtual QSqlError qxDeleteRow (int row, QSqlDatabase *pDatabase=NULL)
 Delete in database the item at line row in the model, if no error occurred then you should remove row from the model.
virtual QSqlError qxDestroyById (const QVariant &id, QSqlDatabase *pDatabase=NULL)
 Delete a line of a table (even if a logical delete is defined) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.
virtual QSqlError qxDestroyAll (QSqlDatabase *pDatabase=NULL)
 Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.
virtual QSqlError qxDestroyByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
 Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.
virtual QSqlError qxDestroyRow (int row, QSqlDatabase *pDatabase=NULL)
 Delete in database (even if a logical delete is defined) the item at line row in the model, if no error occurred then you should remove row from the model.
virtual QSqlError qxExecuteQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)
virtual qx_bool qxExist (const QVariant &id, QSqlDatabase *pDatabase=NULL)
virtual qx::QxInvalidValueX qxValidate (const QStringList &groups=QStringList())
virtual qx::QxInvalidValueX qxValidateRow (int row, const QStringList &groups=QStringList())

Protected Member Functions

void init ()
void initFrom (qx::IxModel *pOther)
void updateKey (int row)
void updateAllKeys ()

Protected Attributes

type_collection m_model
 Model associated to a class registered into QxOrm context.
long m_lManualInsertIndex
 Index to insert manually items to the collection.

Friends

struct qx::model_view::detail::QxNestedModel< T >
struct qx::model_view::detail::QxNestedModel_Generic< T >
struct qx::model_view::detail::QxNestedModel_Container

Detailed Description

template<class T>
class qx::QxModel< T >

qx::QxModel<T> : all classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views)

QxModelView module provides an easy way to work with Qt model/view engine with all classes registered into QxOrm context :

  • Qt widgets : QTableView or QListView for example to display/modify a database table content ;
  • QML : each property defined in QxOrm context is exposed to QML engine : QxModelView module makes easier integration between QML and databases.

qx::IxModel interface provides a generic way for all models linked to persistents classes registered into QxOrm context. All methods of this class prefixed by qx call functions from qx::dao namespace and then communicate with database.

The qxBlogModelView sample project in ./test/ directory of QxOrm package shows how to create quickly a model and associate it to the Qt model/view engine (first with a Qt widget, then with a QML view).

1- Here is an example to display/modify data from 'author' table (go to qxBlog tutorial for 'author' class definition) in a QTableView :

// Create a model and fetch all data from database
qx::IxModel * pModel = new qx::QxModel<author>();
pModel->qxFetchAll();

// Associate the model to a QTableView and display it
QTableView tableView;
tableView.setModel(pModel);
tableView.show();

2- Here is another example in QML (with Qt5, QxModelView module works fine with Qt4 too) :

// Create a model and fetch all data from database
qx::IxModel * pModel = new qx::QxModel<author>();
pModel->qxFetchAll();

// Associate the model to a QML view and display it
QQuickView qmlView;
qmlView.rootContext()->setContextProperty("myModel", pModel);
qmlView.setSource(QUrl("qrc:/documents/main.qml"));
qmlView.show();

And here is the 'main.qml' file content :

import QtQuick 2.1
import QtQuick.Controls 1.0

Item {
   width: 400
   height: 300
   Row {
      height: 20
      spacing: 20
      Button {
         text: "Clear"
         onClicked: myModel.clear()
      }
      Button {
         text: "Fetch All"
         onClicked: myModel.qxFetchAll_()
      }
      Button {
         text: "Save"
         onClicked: myModel.qxSave_()
      }
   }
   ListView {
      y: 30
      height: 270
      model: myModel
      delegate: Row {
         height: 20
         spacing: 10
         Text { text: "id: " + author_id }
         TextField {
            text: name
            onTextChanged: name = text
         }
      }
   }
}

As you can see in the 'main.qml' file, 'author_id' and 'name' properties of 'author' model ('myModel' variable) can be automatically read and write (because they are registered into QxOrm context). Moreover, qx::IxModel interface provides a list of methods for QML side (Q_INVOKABLE) to communicate with database : for example, the 'Save' button will save the model in database without having to write a C++ function.

Note : a QxEntityEditor plugin generates automatically the code to manage models with relationships. Then it is possible to work with nested C++ models.

Definition at line 154 of file QxModel.h.


Member Typedef Documentation

Reimplemented in qx::QxModelService< T, S >.

Definition at line 165 of file QxModel.h.

template<class T>
typedef qx::trait::get_primary_key<T>::type qx::QxModel< T >::type_primary_key

Reimplemented in qx::QxModelService< T, S >.

Definition at line 164 of file QxModel.h.

template<class T>
typedef boost::shared_ptr<T> qx::QxModel< T >::type_ptr

Reimplemented in qx::QxModelService< T, S >.

Definition at line 163 of file QxModel.h.


Member Enumeration Documentation

template<class T>
anonymous enum
Enumerator:
qx_is_valid 

Definition at line 167 of file QxModel.h.


Constructor & Destructor Documentation

template<class T>
qx::QxModel< T >::QxModel ( QObject *  parent = 0) [inline]

Definition at line 176 of file QxModel.h.

template<class T>
qx::QxModel< T >::QxModel ( qx::IxModel other,
QObject *  parent 
) [inline]

Definition at line 177 of file QxModel.h.

template<class T>
virtual qx::QxModel< T >::~QxModel ( ) [inline, virtual]

Definition at line 178 of file QxModel.h.


Member Function Documentation

template<class T>
virtual QVariant qx::QxModel< T >::data ( const QModelIndex &  index,
int  role = Qt::DisplayRole 
) const [inline, virtual]

Definition at line 204 of file QxModel.h.

template<class T>
void qx::QxModel< T >::init ( ) [inline, protected]

Definition at line 182 of file QxModel.h.

template<class T>
void qx::QxModel< T >::initFrom ( qx::IxModel pOther) [inline, protected]

Definition at line 192 of file QxModel.h.

template<class T>
virtual bool qx::QxModel< T >::insertRows ( int  row,
int  count,
const QModelIndex &  parent = QModelIndex() 
) [inline, virtual]

Definition at line 256 of file QxModel.h.

template<class T>
virtual long qx::QxModel< T >::qxCount ( const qx::QxSqlQuery query = qx::QxSqlQuery(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.

Parameters:
queryDefine a user SQL query added to default SQL query builded by QxOrm library (optional parameter)
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 281 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxCount ( long &  lCount,
const qx::QxSqlQuery query = qx::QxSqlQuery(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Return the number of lines in the table (database) mapped to the C++ class T (registered into QxOrm context) and filtered by a user SQL query.

Parameters:
lCountOutput parameter with the number of lines in the table associated to the SQL query
queryDefine a user SQL query added to default SQL query builded by QxOrm library (optional parameter)
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 292 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDeleteAll ( QSqlDatabase *  pDatabase = NULL) [inline, virtual]

Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.

Parameters:
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 509 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDeleteById ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete a line of a table (database) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.

Parameters:
idRow id to be deleted from database
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 494 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDeleteByQuery ( const qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete all lines of a table (database) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.

Parameters:
queryDefine a user SQL query added to default SQL query builded by QxOrm library
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 521 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDeleteRow ( int  row,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete in database the item at line row in the model, if no error occurred then you should remove row from the model.

Parameters:
rowDelete in database the item in the model at line row
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 533 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDestroyAll ( QSqlDatabase *  pDatabase = NULL) [inline, virtual]

Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context), if no error occurred then you should clear the model.

Parameters:
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 562 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDestroyById ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete a line of a table (even if a logical delete is defined) mapped to a C++ object of type T (registered into QxOrm context), if no error occurred then you should remove row from the model.

Parameters:
idRow id to be deleted from database
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 547 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDestroyByQuery ( const qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete all lines of a table (even if a logical delete is defined) mapped to a C++ class T (registered into QxOrm context) and filtered by a user SQL query, if no error occurred then you should refresh the model.

Parameters:
queryDefine a user SQL query added to default SQL query builded by QxOrm library
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 574 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxDestroyRow ( int  row,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Delete in database (even if a logical delete is defined) the item at line row in the model, if no error occurred then you should remove row from the model.

Parameters:
rowDelete in database the item in the model at line row
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 586 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxExecuteQuery ( qx::QxSqlQuery query,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 594 of file QxModel.h.

template<class T>
virtual qx_bool qx::QxModel< T >::qxExist ( const QVariant &  id,
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 607 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxFetchAll ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database.

Parameters:
relationList of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 330 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxFetchById ( const QVariant &  id,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Clear the model and fetch an object (retrieve all its properties) of type T (registered into QxOrm context) mapped to a table in the database.

Parameters:
idRow id to be fetched (retrieve all properties from database)
relationList of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 305 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxFetchByQuery ( const qx::QxSqlQuery query,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Clear the model and fetch a list of objects (retrieve all elements and properties associated) of type T (container registered into QxOrm context) mapped to a table in the database and filtered by a user SQL query.

Parameters:
queryDefine a user SQL query added to default SQL query builded by QxOrm library
relationList of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 351 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxFetchRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Get an item in the model at line row and fetch all its properties mapped to a table in the database, then all views attached to this model are automatically updated.

Parameters:
rowGet an item in the model at line row
relationList of relationships keys to be fetched (eager fetch instead of default lazy fetch for a relation) : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 372 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxInsert ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Insert all items in the model into database.

Parameters:
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 393 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxInsertRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Insert an item of the model at line row into database.

Parameters:
rowInsert an item in the model at line row
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 409 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxSave ( const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Save all items (insert or update) in the model into database.

Parameters:
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 461 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxSaveRow ( int  row,
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Save an item of the model at line row into database.

Parameters:
rowSave an item (insert or update) in the model at line row
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 477 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxUpdate ( const qx::QxSqlQuery query = qx::QxSqlQuery(),
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Update all items in the model into database.

Parameters:
queryDefine a user SQL query added to default SQL query builded by QxOrm library
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 427 of file QxModel.h.

template<class T>
virtual QSqlError qx::QxModel< T >::qxUpdateRow ( int  row,
const qx::QxSqlQuery query = qx::QxSqlQuery(),
const QStringList &  relation = QStringList(),
QSqlDatabase *  pDatabase = NULL 
) [inline, virtual]

Update an item of the model at line row into database.

Parameters:
rowUpdate an item in the model at line row
queryDefine a user SQL query added to default SQL query builded by QxOrm library
relationList of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
pDatabaseConnection to database (you can manage your own connection pool for example, you can also define a transaction, etc.); if NULL, a valid connection for the current thread is provided by qx::QxSqlDatabase singleton class (optional parameter)
Returns:
Empty QSqlError object (from Qt library) if no error occurred; otherwise QSqlError contains a description of database error executing SQL query

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 444 of file QxModel.h.

template<class T>
virtual qx::QxInvalidValueX qx::QxModel< T >::qxValidate ( const QStringList &  groups = QStringList()) [inline, virtual]

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 616 of file QxModel.h.

template<class T>
virtual qx::QxInvalidValueX qx::QxModel< T >::qxValidateRow ( int  row,
const QStringList &  groups = QStringList() 
) [inline, virtual]

Implements qx::IxModel.

Reimplemented in qx::QxModelService< T, S >.

Definition at line 621 of file QxModel.h.

template<class T>
virtual bool qx::QxModel< T >::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
) [inline, virtual]

Definition at line 224 of file QxModel.h.

template<class T>
void qx::QxModel< T >::updateAllKeys ( ) [inline, protected]

Definition at line 646 of file QxModel.h.

template<class T>
void qx::QxModel< T >::updateKey ( int  row) [inline, protected]

Definition at line 630 of file QxModel.h.


Friends And Related Function Documentation

template<class T>
friend struct qx::model_view::detail::QxNestedModel< T > [friend]

Definition at line 157 of file QxModel.h.

template<class T>
friend struct qx::model_view::detail::QxNestedModel_Container [friend]

Definition at line 159 of file QxModel.h.

template<class T>
friend struct qx::model_view::detail::QxNestedModel_Generic< T > [friend]

Definition at line 158 of file QxModel.h.


Member Data Documentation

template<class T>
long qx::QxModel< T >::m_lManualInsertIndex [protected]

Index to insert manually items to the collection.

Definition at line 172 of file QxModel.h.

template<class T>
type_collection qx::QxModel< T >::m_model [protected]

Model associated to a class registered into QxOrm context.

Definition at line 171 of file QxModel.h.


The documentation for this class was generated from the following file: