| QxOrm 1.3.1 C++ Object Relational Mapping library

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Directories

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Friends
qx::QxModel< T > Class Template Reference
QxModelView : All classes registered into QxOrm context can be used with Qt model/view architecture (Qt widgets and/or QML views)

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 >:

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

template<class T>

typedef qx::QxCollection<type_primary_key, type_ptr> qx::QxModel< T >::type_collection

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:

  query | Define a user SQL query added to default SQL query builded by QxOrm library (optional parameter)
  pDatabase | Connection 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:

  lCount | Output parameter with the number of lines in the table associated to the SQL query
  query | Define a user SQL query added to default SQL query builded by QxOrm library (optional parameter)
  pDatabase | Connection 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:

  pDatabase | Connection 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:

  id | Row id to be deleted from database
  pDatabase | Connection 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:

  query | Define a user SQL query added to default SQL query builded by QxOrm library
  pDatabase | Connection 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:

  row | Delete in database the item in the model at line row
  pDatabase | Connection 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:

  pDatabase | Connection 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:

  id | Row id to be deleted from database
  pDatabase | Connection 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:

  query | Define a user SQL query added to default SQL query builded by QxOrm library
  pDatabase | Connection 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:

  row | Delete in database the item in the model at line row
  pDatabase | Connection 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:

  relation | List 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
  pDatabase | Connection 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:

  id | Row id to be fetched (retrieve all properties from database)
  relation | List 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
  pDatabase | Connection 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:

  query | Define a user SQL query added to default SQL query builded by QxOrm library
  relation | List 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
  pDatabase | Connection 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:

  row | Get an item in the model at line row
  relation | List 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
  pDatabase | Connection 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:

  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

  row | Insert an item in the model at line row
  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

  row | Save an item (insert or update) in the model at line row
  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

  query | Define a user SQL query added to default SQL query builded by QxOrm library
  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

  row | Update an item in the model at line row
  query | Define a user SQL query added to default SQL query builded by QxOrm library
  relation | List of relationships keys to be inserted in others tables of database : use "|" separator to put many relationships keys into this parameter
  pDatabase | Connection 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:

- D:/Dvlp/_Perso/QxOrm/include/QxModelView/QxModel.h