QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches

qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm context (Qt widgets and/or QML views) More...

#include <IxModel.h>

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

Public Types

enum  e_auto_update_database { e_no_auto_update , e_auto_update_on_field_change }
 
typedef QHash< QString, IxModel * > type_relation_by_name
 
typedef QList< type_relation_by_nametype_lst_relation_by_name
 
typedef QHash< IxModel *, QPair< int, QString > > type_child_to_its_relation
 

Public Member Functions

 IxModel (QObject *parent=0)
 
virtual ~IxModel ()
 
IxClassgetClass () const
 
IxClassgetModelClass () const
 
IxCollectiongetCollection () const
 
QSqlDatabase getDatabase () const
 
QSqlError getLastError () const
 
Q_INVOKABLE QString getLastErrorAsString () const
 
Q_INVOKABLE QStringList getListOfColumns () const
 
QHash< QString, QString > getListOfHeaders () const
 Obsolete : use headerData() instead.
 
IxDataMembergetDataMember (int column) const
 
Q_INVOKABLE QString getDataMemberKey (int column) const
 
Q_INVOKABLE int getRowCount () const
 
Q_INVOKABLE QVariant getModelValue (int row, const QString &column) const
 
Q_INVOKABLE int getColumnIndex (const QString &sColumnName) const
 
Q_INVOKABLE int getAutoUpdateDatabase_ () const
 
e_auto_update_database getAutoUpdateDatabase () const
 
virtual Q_INVOKABLE bool getShowEmptyLine () const =0
 Can be useful when a model is displayed in a table (QTableView for example) to add automatically an empty row at the end of the table to insert quickly new items (for example, same style like QxEntityEditor list of properties/relationships)
 
Q_INVOKABLE QVariant getCustomProperty (const QString &key) const
 
Q_INVOKABLE QObject * getParentModel () const
 Can be used to figure out whether this model has a parent model (used only by nested models)
 
Q_INVOKABLE void dumpModel (bool bJsonFormat=true) const
 
Q_INVOKABLE QObject * cloneModel ()
 
void setDatabase (const QSqlDatabase &db)
 
Q_INVOKABLE void setListOfColumns (const QStringList &lst)
 
void setListOfHeaders (const QHash< QString, QString > &lst)
 Obsolete : use setHeaderData() instead.
 
Q_INVOKABLE bool setModelValue (int row, const QString &column, const QVariant &value)
 
void setParentModel (IxModel *pParent)
 
Q_INVOKABLE void setAutoUpdateDatabase_ (int i)
 
void setAutoUpdateDatabase (e_auto_update_database e)
 
virtual Q_INVOKABLE void setShowEmptyLine (bool b)=0
 
Q_INVOKABLE void setCustomProperty (const QString &key, const QVariant &val)
 
Q_INVOKABLE QString toJson (int row=-1) const
 On QML side, use JSON.parse() to create a javascript object after calling this qx::IxModel::toJson() method.
 
Q_INVOKABLE bool fromJson (const QString &json, int row=-1)
 On QML side, use JSON.stringify() on a javascript object before calling this qx::IxModel::fromJson() method.
 
Q_INVOKABLE QVariant getRelationshipValues (int row, const QString &relation, bool bLoadFromDatabase=false, const QString &sAppendRelations=QString())
 Depending on relationship type (1-1, 1-n, n-1, n-n) : can return a QVariantMap type or a QVariantList type.
 
Q_INVOKABLE bool setRelationshipValues (int row, const QString &relation, const QVariant &values)
 Depending on relationship type (1-1, 1-n, n-1, n-n) : values parameter can be a QVariantMap type or a QVariantList type.
 
virtual long qxCount (const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxCount (long &lCount, const qx::QxSqlQuery &query=qx::QxSqlQuery(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxFetchById (const QVariant &id, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxFetchAll (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxFetchByQuery (const qx::QxSqlQuery &query, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxFetchRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxInsert (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
 
virtual QSqlError qxInsertRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxUpdate (const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL, bool bUseExecBatch=false)=0
 
virtual QSqlError qxUpdateRow (int row, const qx::QxSqlQuery &query=qx::QxSqlQuery(), const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxSave (const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxSaveRow (int row, const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxSaveRowData (int row, const QStringList &column=QStringList(), QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDeleteById (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDeleteAll (QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDeleteByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDeleteRow (int row, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDestroyById (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDestroyAll (QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDestroyByQuery (const qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxDestroyRow (int row, QSqlDatabase *pDatabase=NULL)=0
 
virtual QSqlError qxExecuteQuery (qx::QxSqlQuery &query, QSqlDatabase *pDatabase=NULL)=0
 
virtual qx_bool qxExist (const QVariant &id, QSqlDatabase *pDatabase=NULL)=0
 
virtual qx::QxInvalidValueX qxValidate (const QStringList &groups=QStringList())=0
 
virtual qx::QxInvalidValueX qxValidateRow (int row, const QStringList &groups=QStringList())=0
 
Q_INVOKABLE int qxCount_ (const QString &sQuery)
 
Q_INVOKABLE bool qxFetchById_ (const QVariant &id, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxFetchAll_ (const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxFetchByQuery_ (const QString &sQuery, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxFetchRow_ (int row, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxInsert_ (const QStringList &relation=QStringList(), bool bUseExecBatch=false)
 
Q_INVOKABLE bool qxInsertRow_ (int row, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxUpdate_ (const QString &sQuery, const QStringList &relation=QStringList(), bool bUseExecBatch=false)
 
Q_INVOKABLE bool qxUpdateRow_ (int row, const QString &sQuery, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxSave_ (const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxSaveRow_ (int row, const QStringList &relation=QStringList())
 
Q_INVOKABLE bool qxDeleteById_ (const QVariant &id)
 
Q_INVOKABLE bool qxDeleteAll_ ()
 
Q_INVOKABLE bool qxDeleteByQuery_ (const QString &sQuery)
 
Q_INVOKABLE bool qxDeleteRow_ (int row)
 
Q_INVOKABLE bool qxDestroyById_ (const QVariant &id)
 
Q_INVOKABLE bool qxDestroyAll_ ()
 
Q_INVOKABLE bool qxDestroyByQuery_ (const QString &sQuery)
 
Q_INVOKABLE bool qxDestroyRow_ (int row)
 
Q_INVOKABLE bool qxExecuteQuery_ (const QString &sQuery)
 
Q_INVOKABLE bool qxExist_ (const QVariant &id)
 
Q_INVOKABLE QString qxValidate_ (const QStringList &groups=QStringList())
 
Q_INVOKABLE QString qxValidateRow_ (int row, const QStringList &groups=QStringList())
 
QSqlError saveChildRelations (IxModel *pChild)
 
QVariant getIdFromChild (IxModel *pChild) const
 Used to save foreign key in a nested model.
 
QPair< int, QString > getChildPosition (IxModel *pChild) const
 
Q_INVOKABLE void clear (bool bUpdateColumns=false)
 
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 int rowCount (const QModelIndex &parent=QModelIndex()) const
 
virtual int columnCount (const QModelIndex &parent=QModelIndex()) const
 
virtual QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const
 
virtual QModelIndex parent (const QModelIndex &index) const
 
virtual bool hasChildren (const QModelIndex &parent=QModelIndex()) const
 
virtual QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
 
virtual Qt::ItemFlags flags (const QModelIndex &index) const
 
virtual Qt::DropActions supportedDropActions () const
 
virtual bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex())
 
virtual bool setHeaderData (int section, Qt::Orientation orientation, const QVariant &value, int role=Qt::EditRole)
 
bool setHeaderData (const QString &sColumnName, const QVariant &value, int role=Qt::EditRole)
 
virtual QHash< int, QByteArray > roleNames () const
 
virtual Qt::DropActions supportedDragActions () const
 

Protected Member Functions

void raiseEvent_headerDataChanged (Qt::Orientation orientation, int first, int last)
 
void raiseEvent_dataChanged (const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles=QVector< int >())
 
void raiseEvent_layoutAboutToBeChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
 
void raiseEvent_layoutChanged (const QList< QPersistentModelIndex > &parents=QList< QPersistentModelIndex >(), QAbstractItemModel::LayoutChangeHint hint=QAbstractItemModel::NoLayoutChangeHint)
 
virtual QObject * cloneModelImpl ()=0
 
virtual void dumpModelImpl (bool bJsonFormat) const =0
 
virtual void * getRowItemAsVoidPtr (int row) const =0
 
virtual bool isDirtyRow (int row) const =0
 
virtual void insertDirtyRowToModel ()=0
 
virtual void updateShowEmptyLine ()=0
 
virtual void syncNestedModel (int row, const QStringList &relation)
 
virtual void syncAllNestedModel (const QStringList &relation)
 
void syncNestedModelRecursive (IxModel *pNestedModel, const QStringList &relation)
 
void generateRoleNames ()
 
QSqlDatabase * database (QSqlDatabase *other)
 
IxModelgetChild (long row, const QString &relation)
 
void insertChild (long row, const QString &relation, IxModel *pChild)
 
void removeListOfChild (long row)
 
bool removeRowsGeneric (int row, int count)
 
bool removeRowsAutoUpdateOnFieldChange (int row, int count)
 
virtual QString toJson_Helper (int row) const =0
 
virtual bool fromJson_Helper (const QString &json, int row)=0
 
virtual QVariant getRelationshipValues_Helper (int row, const QString &relation, bool bLoadFromDatabase, const QString &sAppendRelations)=0
 
virtual bool setRelationshipValues_Helper (int row, const QString &relation, const QVariant &values)=0
 

Protected Attributes

IxClassm_pClass
 Class introspection registered into QxOrm context associated to the model.
 
IxClassm_pModelClass
 If model itself is registered into QxOrm context, then you can use this property to work with introspection engine.
 
IxDataMemberXm_pDataMemberX
 List of properties defined into QxOrm context.
 
IxDataMemberm_pDataMemberId
 Primary key (property id) defined into QxOrm context.
 
IxCollectionm_pCollection
 Interface to store a list of items.
 
QHash< int, QByteArray > m_lstRoleNames
 List of model's role names to expose data to QML.
 
QList< IxDataMember * > m_lstDataMember
 List of data member exposed by the model.
 
QHash< QString, int > m_lstDataMemberByKey
 List of data member key to get column index in model.
 
QHash< QString, QVariant > m_lstHeadersData
 List of headers data by role and data member key.
 
QStringList m_lstColumns
 List of columns exposed by the model (if empty, all columns)
 
QSqlDatabase m_database
 Database connexion to execute SQL queries (if empty, default database connexion)
 
QSqlError m_lastError
 Last SQL error.
 
IxModelm_pParent
 Parent model, NULL if current model is the root model.
 
type_lst_relation_by_name m_lstChild
 List of child model : QxEntityEditor uses this property to manage relationships and create complex data structure.
 
type_child_to_its_relation m_hChild
 Reverse link to m_lstChild, used in setData() to save relations.
 
e_auto_update_database m_eAutoUpdateDatabase
 Auto-update database on field change (detected by the setData() method)
 
IxDataMemberm_pDataMemberRelationToParent
 The data member holding relationship to its parent model (if one exists), used only by nested models.
 
long m_lManualInsertIndex
 Index to insert manually items to the collection.
 
QHash< QString, QVariant > m_hCustomProperties
 Use this generic hash-table to define extra-properties in your custom classes which inherit from qx::IxModel interface (instead of creating new properties) ==> this will ensure that sizeof(qx::IxModel) == sizeof(YourCustomClass), this is important with nested models feature.
 

Friends

template<typename U , typename V >
struct qx::model_view::detail::QxNestedModel
 
template<typename U , typename V >
struct qx::model_view::detail::QxNestedModel_Generic
 
template<typename U , typename V >
struct qx::model_view::detail::QxNestedModel_Container
 

Detailed Description

qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm context (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
pModel->qxFetchAll();
// Associate the model to a QTableView and display it
QTableView tableView;
tableView.setModel(pModel);
tableView.show();
qx::IxModel : interface to manage Qt model/view architecture with classes registered into QxOrm conte...
Definition IxModel.h:163
virtual QSqlError qxFetchAll(const QStringList &relation=QStringList(), QSqlDatabase *pDatabase=NULL)=0
qx::QxModel<T, B> : all classes registered into QxOrm context can be used with Qt model/view architec...
Definition QxModel.h:164

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
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 162 of file IxModel.h.

Member Typedef Documentation

◆ type_child_to_its_relation

typedef QHash<IxModel *, QPair<int, QString> > qx::IxModel::type_child_to_its_relation

Definition at line 177 of file IxModel.h.

◆ type_lst_relation_by_name

Definition at line 176 of file IxModel.h.

◆ type_relation_by_name

typedef QHash<QString, IxModel *> qx::IxModel::type_relation_by_name

Definition at line 175 of file IxModel.h.

Member Enumeration Documentation

◆ e_auto_update_database

Enumerator
e_no_auto_update 
e_auto_update_on_field_change 

Definition at line 173 of file IxModel.h.

Constructor & Destructor Documentation

◆ IxModel()

qx::IxModel::IxModel ( QObject * parent = 0)

◆ ~IxModel()

virtual qx::IxModel::~IxModel ( )
virtual

Member Function Documentation

◆ clear()

Q_INVOKABLE void qx::IxModel::clear ( bool bUpdateColumns = false)

◆ cloneModel()

Q_INVOKABLE QObject * qx::IxModel::cloneModel ( )

◆ cloneModelImpl()

virtual QObject * qx::IxModel::cloneModelImpl ( )
protectedpure virtual

◆ columnCount()

virtual int qx::IxModel::columnCount ( const QModelIndex & parent = QModelIndex()) const
virtual

◆ data()

virtual QVariant qx::IxModel::data ( const QModelIndex & index,
int role = Qt::DisplayRole ) const
virtual

◆ database()

QSqlDatabase * qx::IxModel::database ( QSqlDatabase * other)
protected

◆ dumpModel()

Q_INVOKABLE void qx::IxModel::dumpModel ( bool bJsonFormat = true) const

◆ dumpModelImpl()

virtual void qx::IxModel::dumpModelImpl ( bool bJsonFormat) const
protectedpure virtual

◆ flags()

virtual Qt::ItemFlags qx::IxModel::flags ( const QModelIndex & index) const
virtual

◆ fromJson()

Q_INVOKABLE bool qx::IxModel::fromJson ( const QString & json,
int row = -1 )

On QML side, use JSON.stringify() on a javascript object before calling this qx::IxModel::fromJson() method.

◆ fromJson_Helper()

virtual bool qx::IxModel::fromJson_Helper ( const QString & json,
int row )
protectedpure virtual

◆ generateRoleNames()

void qx::IxModel::generateRoleNames ( )
protected

◆ getAutoUpdateDatabase()

e_auto_update_database qx::IxModel::getAutoUpdateDatabase ( ) const

◆ getAutoUpdateDatabase_()

Q_INVOKABLE int qx::IxModel::getAutoUpdateDatabase_ ( ) const

◆ getChild()

IxModel * qx::IxModel::getChild ( long row,
const QString & relation )
protected

◆ getChildPosition()

QPair< int, QString > qx::IxModel::getChildPosition ( IxModel * pChild) const

◆ getClass()

IxClass * qx::IxModel::getClass ( ) const

◆ getCollection()

IxCollection * qx::IxModel::getCollection ( ) const

◆ getColumnIndex()

Q_INVOKABLE int qx::IxModel::getColumnIndex ( const QString & sColumnName) const

◆ getCustomProperty()

Q_INVOKABLE QVariant qx::IxModel::getCustomProperty ( const QString & key) const

◆ getDatabase()

QSqlDatabase qx::IxModel::getDatabase ( ) const

◆ getDataMember()

IxDataMember * qx::IxModel::getDataMember ( int column) const

◆ getDataMemberKey()

Q_INVOKABLE QString qx::IxModel::getDataMemberKey ( int column) const

◆ getIdFromChild()

QVariant qx::IxModel::getIdFromChild ( IxModel * pChild) const

Used to save foreign key in a nested model.

◆ getLastError()

QSqlError qx::IxModel::getLastError ( ) const

◆ getLastErrorAsString()

Q_INVOKABLE QString qx::IxModel::getLastErrorAsString ( ) const

◆ getListOfColumns()

Q_INVOKABLE QStringList qx::IxModel::getListOfColumns ( ) const

◆ getListOfHeaders()

QHash< QString, QString > qx::IxModel::getListOfHeaders ( ) const

Obsolete : use headerData() instead.

◆ getModelClass()

IxClass * qx::IxModel::getModelClass ( ) const

◆ getModelValue()

Q_INVOKABLE QVariant qx::IxModel::getModelValue ( int row,
const QString & column ) const

◆ getParentModel()

Q_INVOKABLE QObject * qx::IxModel::getParentModel ( ) const

Can be used to figure out whether this model has a parent model (used only by nested models)

◆ getRelationshipValues()

Q_INVOKABLE QVariant qx::IxModel::getRelationshipValues ( int row,
const QString & relation,
bool bLoadFromDatabase = false,
const QString & sAppendRelations = QString() )

Depending on relationship type (1-1, 1-n, n-1, n-n) : can return a QVariantMap type or a QVariantList type.

◆ getRelationshipValues_Helper()

virtual QVariant qx::IxModel::getRelationshipValues_Helper ( int row,
const QString & relation,
bool bLoadFromDatabase,
const QString & sAppendRelations )
protectedpure virtual

◆ getRowCount()

Q_INVOKABLE int qx::IxModel::getRowCount ( ) const

◆ getRowItemAsVoidPtr()

virtual void * qx::IxModel::getRowItemAsVoidPtr ( int row) const
protectedpure virtual

◆ getShowEmptyLine()

virtual Q_INVOKABLE bool qx::IxModel::getShowEmptyLine ( ) const
pure virtual

Can be useful when a model is displayed in a table (QTableView for example) to add automatically an empty row at the end of the table to insert quickly new items (for example, same style like QxEntityEditor list of properties/relationships)

Implemented in qx::QxModel< T, B >, and qx::QxModel< T, qx::IxModel >.

◆ hasChildren()

virtual bool qx::IxModel::hasChildren ( const QModelIndex & parent = QModelIndex()) const
virtual

◆ headerData()

virtual QVariant qx::IxModel::headerData ( int section,
Qt::Orientation orientation,
int role = Qt::DisplayRole ) const
virtual

◆ index()

virtual QModelIndex qx::IxModel::index ( int row,
int column,
const QModelIndex & parent = QModelIndex() ) const
virtual

◆ insertChild()

void qx::IxModel::insertChild ( long row,
const QString & relation,
IxModel * pChild )
protected

◆ insertDirtyRowToModel()

virtual void qx::IxModel::insertDirtyRowToModel ( )
protectedpure virtual

◆ isDirtyRow()

virtual bool qx::IxModel::isDirtyRow ( int row) const
protectedpure virtual

◆ parent()

virtual QModelIndex qx::IxModel::parent ( const QModelIndex & index) const
virtual

◆ qxCount() [1/2]

virtual long qx::IxModel::qxCount ( const qx::QxSqlQuery & query = qx::QxSqlQuery(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxCount() [2/2]

virtual QSqlError qx::IxModel::qxCount ( long & lCount,
const qx::QxSqlQuery & query = qx::QxSqlQuery(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxCount_()

Q_INVOKABLE int qx::IxModel::qxCount_ ( const QString & sQuery)

◆ qxDeleteAll()

virtual QSqlError qx::IxModel::qxDeleteAll ( QSqlDatabase * pDatabase = NULL)
pure virtual

◆ qxDeleteAll_()

Q_INVOKABLE bool qx::IxModel::qxDeleteAll_ ( )

◆ qxDeleteById()

virtual QSqlError qx::IxModel::qxDeleteById ( const QVariant & id,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDeleteById_()

Q_INVOKABLE bool qx::IxModel::qxDeleteById_ ( const QVariant & id)

◆ qxDeleteByQuery()

virtual QSqlError qx::IxModel::qxDeleteByQuery ( const qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDeleteByQuery_()

Q_INVOKABLE bool qx::IxModel::qxDeleteByQuery_ ( const QString & sQuery)

◆ qxDeleteRow()

virtual QSqlError qx::IxModel::qxDeleteRow ( int row,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDeleteRow_()

Q_INVOKABLE bool qx::IxModel::qxDeleteRow_ ( int row)

◆ qxDestroyAll()

virtual QSqlError qx::IxModel::qxDestroyAll ( QSqlDatabase * pDatabase = NULL)
pure virtual

◆ qxDestroyAll_()

Q_INVOKABLE bool qx::IxModel::qxDestroyAll_ ( )

◆ qxDestroyById()

virtual QSqlError qx::IxModel::qxDestroyById ( const QVariant & id,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDestroyById_()

Q_INVOKABLE bool qx::IxModel::qxDestroyById_ ( const QVariant & id)

◆ qxDestroyByQuery()

virtual QSqlError qx::IxModel::qxDestroyByQuery ( const qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDestroyByQuery_()

Q_INVOKABLE bool qx::IxModel::qxDestroyByQuery_ ( const QString & sQuery)

◆ qxDestroyRow()

virtual QSqlError qx::IxModel::qxDestroyRow ( int row,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxDestroyRow_()

Q_INVOKABLE bool qx::IxModel::qxDestroyRow_ ( int row)

◆ qxExecuteQuery()

virtual QSqlError qx::IxModel::qxExecuteQuery ( qx::QxSqlQuery & query,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxExecuteQuery_()

Q_INVOKABLE bool qx::IxModel::qxExecuteQuery_ ( const QString & sQuery)

◆ qxExist()

virtual qx_bool qx::IxModel::qxExist ( const QVariant & id,
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxExist_()

Q_INVOKABLE bool qx::IxModel::qxExist_ ( const QVariant & id)

◆ qxFetchAll()

virtual QSqlError qx::IxModel::qxFetchAll ( const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxFetchAll_()

Q_INVOKABLE bool qx::IxModel::qxFetchAll_ ( const QStringList & relation = QStringList())

◆ qxFetchById()

virtual QSqlError qx::IxModel::qxFetchById ( const QVariant & id,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxFetchById_()

Q_INVOKABLE bool qx::IxModel::qxFetchById_ ( const QVariant & id,
const QStringList & relation = QStringList() )

◆ qxFetchByQuery()

virtual QSqlError qx::IxModel::qxFetchByQuery ( const qx::QxSqlQuery & query,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxFetchByQuery_()

Q_INVOKABLE bool qx::IxModel::qxFetchByQuery_ ( const QString & sQuery,
const QStringList & relation = QStringList() )

◆ qxFetchRow()

virtual QSqlError qx::IxModel::qxFetchRow ( int row,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxFetchRow_()

Q_INVOKABLE bool qx::IxModel::qxFetchRow_ ( int row,
const QStringList & relation = QStringList() )

◆ qxInsert()

virtual QSqlError qx::IxModel::qxInsert ( const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL,
bool bUseExecBatch = false )
pure virtual

◆ qxInsert_()

Q_INVOKABLE bool qx::IxModel::qxInsert_ ( const QStringList & relation = QStringList(),
bool bUseExecBatch = false )

◆ qxInsertRow()

virtual QSqlError qx::IxModel::qxInsertRow ( int row,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxInsertRow_()

Q_INVOKABLE bool qx::IxModel::qxInsertRow_ ( int row,
const QStringList & relation = QStringList() )

◆ qxSave()

virtual QSqlError qx::IxModel::qxSave ( const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxSave_()

Q_INVOKABLE bool qx::IxModel::qxSave_ ( const QStringList & relation = QStringList())

◆ qxSaveRow()

virtual QSqlError qx::IxModel::qxSaveRow ( int row,
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxSaveRow_()

Q_INVOKABLE bool qx::IxModel::qxSaveRow_ ( int row,
const QStringList & relation = QStringList() )

◆ qxSaveRowData()

virtual QSqlError qx::IxModel::qxSaveRowData ( int row,
const QStringList & column = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxUpdate()

virtual QSqlError qx::IxModel::qxUpdate ( const qx::QxSqlQuery & query = qx::QxSqlQuery(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL,
bool bUseExecBatch = false )
pure virtual

◆ qxUpdate_()

Q_INVOKABLE bool qx::IxModel::qxUpdate_ ( const QString & sQuery,
const QStringList & relation = QStringList(),
bool bUseExecBatch = false )

◆ qxUpdateRow()

virtual QSqlError qx::IxModel::qxUpdateRow ( int row,
const qx::QxSqlQuery & query = qx::QxSqlQuery(),
const QStringList & relation = QStringList(),
QSqlDatabase * pDatabase = NULL )
pure virtual

◆ qxUpdateRow_()

Q_INVOKABLE bool qx::IxModel::qxUpdateRow_ ( int row,
const QString & sQuery,
const QStringList & relation = QStringList() )

◆ qxValidate()

virtual qx::QxInvalidValueX qx::IxModel::qxValidate ( const QStringList & groups = QStringList())
pure virtual

◆ qxValidate_()

Q_INVOKABLE QString qx::IxModel::qxValidate_ ( const QStringList & groups = QStringList())

◆ qxValidateRow()

virtual qx::QxInvalidValueX qx::IxModel::qxValidateRow ( int row,
const QStringList & groups = QStringList() )
pure virtual

◆ qxValidateRow_()

Q_INVOKABLE QString qx::IxModel::qxValidateRow_ ( int row,
const QStringList & groups = QStringList() )

◆ raiseEvent_dataChanged()

void qx::IxModel::raiseEvent_dataChanged ( const QModelIndex & topLeft,
const QModelIndex & bottomRight,
const QVector< int > & roles = QVector< int >() )
protected

◆ raiseEvent_headerDataChanged()

void qx::IxModel::raiseEvent_headerDataChanged ( Qt::Orientation orientation,
int first,
int last )
protected

◆ raiseEvent_layoutAboutToBeChanged()

void qx::IxModel::raiseEvent_layoutAboutToBeChanged ( const QList< QPersistentModelIndex > & parents = QList< QPersistentModelIndex >(),
QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint )
protected

◆ raiseEvent_layoutChanged()

void qx::IxModel::raiseEvent_layoutChanged ( const QList< QPersistentModelIndex > & parents = QList< QPersistentModelIndex >(),
QAbstractItemModel::LayoutChangeHint hint = QAbstractItemModel::NoLayoutChangeHint )
protected

◆ removeListOfChild()

void qx::IxModel::removeListOfChild ( long row)
protected

◆ removeRows()

virtual bool qx::IxModel::removeRows ( int row,
int count,
const QModelIndex & parent = QModelIndex() )
virtual

◆ removeRowsAutoUpdateOnFieldChange()

bool qx::IxModel::removeRowsAutoUpdateOnFieldChange ( int row,
int count )
protected

◆ removeRowsGeneric()

bool qx::IxModel::removeRowsGeneric ( int row,
int count )
protected

◆ roleNames()

virtual QHash< int, QByteArray > qx::IxModel::roleNames ( ) const
virtual

◆ rowCount()

virtual int qx::IxModel::rowCount ( const QModelIndex & parent = QModelIndex()) const
virtual

◆ saveChildRelations()

QSqlError qx::IxModel::saveChildRelations ( IxModel * pChild)

◆ setAutoUpdateDatabase()

void qx::IxModel::setAutoUpdateDatabase ( e_auto_update_database e)

◆ setAutoUpdateDatabase_()

Q_INVOKABLE void qx::IxModel::setAutoUpdateDatabase_ ( int i)

◆ setCustomProperty()

Q_INVOKABLE void qx::IxModel::setCustomProperty ( const QString & key,
const QVariant & val )

◆ setData()

virtual bool qx::IxModel::setData ( const QModelIndex & index,
const QVariant & value,
int role = Qt::EditRole )
virtual

◆ setDatabase()

void qx::IxModel::setDatabase ( const QSqlDatabase & db)

◆ setHeaderData() [1/2]

bool qx::IxModel::setHeaderData ( const QString & sColumnName,
const QVariant & value,
int role = Qt::EditRole )

◆ setHeaderData() [2/2]

virtual bool qx::IxModel::setHeaderData ( int section,
Qt::Orientation orientation,
const QVariant & value,
int role = Qt::EditRole )
virtual

◆ setListOfColumns()

Q_INVOKABLE void qx::IxModel::setListOfColumns ( const QStringList & lst)

◆ setListOfHeaders()

void qx::IxModel::setListOfHeaders ( const QHash< QString, QString > & lst)

Obsolete : use setHeaderData() instead.

◆ setModelValue()

Q_INVOKABLE bool qx::IxModel::setModelValue ( int row,
const QString & column,
const QVariant & value )

◆ setParentModel()

void qx::IxModel::setParentModel ( IxModel * pParent)

◆ setRelationshipValues()

Q_INVOKABLE bool qx::IxModel::setRelationshipValues ( int row,
const QString & relation,
const QVariant & values )

Depending on relationship type (1-1, 1-n, n-1, n-n) : values parameter can be a QVariantMap type or a QVariantList type.

◆ setRelationshipValues_Helper()

virtual bool qx::IxModel::setRelationshipValues_Helper ( int row,
const QString & relation,
const QVariant & values )
protectedpure virtual

◆ setShowEmptyLine()

virtual Q_INVOKABLE void qx::IxModel::setShowEmptyLine ( bool b)
pure virtual

◆ supportedDragActions()

virtual Qt::DropActions qx::IxModel::supportedDragActions ( ) const
virtual

◆ supportedDropActions()

virtual Qt::DropActions qx::IxModel::supportedDropActions ( ) const
virtual

◆ syncAllNestedModel()

virtual void qx::IxModel::syncAllNestedModel ( const QStringList & relation)
protectedvirtual

◆ syncNestedModel()

virtual void qx::IxModel::syncNestedModel ( int row,
const QStringList & relation )
protectedvirtual

◆ syncNestedModelRecursive()

void qx::IxModel::syncNestedModelRecursive ( IxModel * pNestedModel,
const QStringList & relation )
protected

◆ toJson()

Q_INVOKABLE QString qx::IxModel::toJson ( int row = -1) const

On QML side, use JSON.parse() to create a javascript object after calling this qx::IxModel::toJson() method.

◆ toJson_Helper()

virtual QString qx::IxModel::toJson_Helper ( int row) const
protectedpure virtual

◆ updateShowEmptyLine()

virtual void qx::IxModel::updateShowEmptyLine ( )
protectedpure virtual

Friends And Related Symbol Documentation

◆ qx::model_view::detail::QxNestedModel

template<typename U , typename V >
friend struct qx::model_view::detail::QxNestedModel
friend

Definition at line 167 of file IxModel.h.

◆ qx::model_view::detail::QxNestedModel_Container

template<typename U , typename V >
friend struct qx::model_view::detail::QxNestedModel_Container
friend

Definition at line 169 of file IxModel.h.

◆ qx::model_view::detail::QxNestedModel_Generic

template<typename U , typename V >
friend struct qx::model_view::detail::QxNestedModel_Generic
friend

Definition at line 168 of file IxModel.h.

Member Data Documentation

◆ m_database

QSqlDatabase qx::IxModel::m_database
protected

Database connexion to execute SQL queries (if empty, default database connexion)

Definition at line 191 of file IxModel.h.

◆ m_eAutoUpdateDatabase

e_auto_update_database qx::IxModel::m_eAutoUpdateDatabase
protected

Auto-update database on field change (detected by the setData() method)

Definition at line 196 of file IxModel.h.

◆ m_hChild

type_child_to_its_relation qx::IxModel::m_hChild
protected

Reverse link to m_lstChild, used in setData() to save relations.

Definition at line 195 of file IxModel.h.

◆ m_hCustomProperties

QHash<QString, QVariant> qx::IxModel::m_hCustomProperties
protected

Use this generic hash-table to define extra-properties in your custom classes which inherit from qx::IxModel interface (instead of creating new properties) ==> this will ensure that sizeof(qx::IxModel) == sizeof(YourCustomClass), this is important with nested models feature.

Definition at line 199 of file IxModel.h.

◆ m_lastError

QSqlError qx::IxModel::m_lastError
protected

Last SQL error.

Definition at line 192 of file IxModel.h.

◆ m_lManualInsertIndex

long qx::IxModel::m_lManualInsertIndex
protected

Index to insert manually items to the collection.

Definition at line 198 of file IxModel.h.

◆ m_lstChild

type_lst_relation_by_name qx::IxModel::m_lstChild
protected

List of child model : QxEntityEditor uses this property to manage relationships and create complex data structure.

Definition at line 194 of file IxModel.h.

◆ m_lstColumns

QStringList qx::IxModel::m_lstColumns
protected

List of columns exposed by the model (if empty, all columns)

Definition at line 190 of file IxModel.h.

◆ m_lstDataMember

QList<IxDataMember *> qx::IxModel::m_lstDataMember
protected

List of data member exposed by the model.

Definition at line 187 of file IxModel.h.

◆ m_lstDataMemberByKey

QHash<QString, int> qx::IxModel::m_lstDataMemberByKey
protected

List of data member key to get column index in model.

Definition at line 188 of file IxModel.h.

◆ m_lstHeadersData

QHash<QString, QVariant> qx::IxModel::m_lstHeadersData
protected

List of headers data by role and data member key.

Definition at line 189 of file IxModel.h.

◆ m_lstRoleNames

QHash<int, QByteArray> qx::IxModel::m_lstRoleNames
protected

List of model's role names to expose data to QML.

Definition at line 186 of file IxModel.h.

◆ m_pClass

IxClass* qx::IxModel::m_pClass
protected

Class introspection registered into QxOrm context associated to the model.

Definition at line 181 of file IxModel.h.

◆ m_pCollection

IxCollection* qx::IxModel::m_pCollection
protected

Interface to store a list of items.

Definition at line 185 of file IxModel.h.

◆ m_pDataMemberId

IxDataMember* qx::IxModel::m_pDataMemberId
protected

Primary key (property id) defined into QxOrm context.

Definition at line 184 of file IxModel.h.

◆ m_pDataMemberRelationToParent

IxDataMember* qx::IxModel::m_pDataMemberRelationToParent
protected

The data member holding relationship to its parent model (if one exists), used only by nested models.

Definition at line 197 of file IxModel.h.

◆ m_pDataMemberX

IxDataMemberX* qx::IxModel::m_pDataMemberX
protected

List of properties defined into QxOrm context.

Definition at line 183 of file IxModel.h.

◆ m_pModelClass

IxClass* qx::IxModel::m_pModelClass
protected

If model itself is registered into QxOrm context, then you can use this property to work with introspection engine.

Definition at line 182 of file IxModel.h.

◆ m_pParent

IxModel* qx::IxModel::m_pParent
protected

Parent model, NULL if current model is the root model.

Definition at line 193 of file IxModel.h.


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