QSqlTableModel は、パブリックを持つ QSqlQueyModel を継承します。
QSqlQuery QSqlQueryModel::query () const
QSqlTableModel が発行する 4 つの変更シグナルに接続できます。
void beforeDelete ( int row )
void beforeInsert ( QSqlRecord & record )
void beforeUpdate ( int row, QSqlRecord & record )
void primeInsert ( int row, QSqlRecord & record )
(問題: 同じイベントに対して primeInsert と BeforeInsert を発行できると思いますが、よくわかりません)
サブクラス化して submit() を再実装し、親 submit を呼び出す前に QSqlQuery を含むシグナルを発行します。
bool YourChildModel::submit ()
{
emit yourSignal(query());
return QSqlTableModel::submit()
}
QsqlQueryには
QString QSqlQuery::lastQuery () const
Returns the text of the current query being used, or an empty string if there is no current query text.
QString QSqlQuery::executedQuery () const
Returns the last query that was successfully executed.
In most cases this function returns the same string as lastQuery(). If a prepared query with placeholders is executed on a DBMS that does not support it, the preparation of this query is emulated. The placeholders in the original query are replaced with their bound values to form a new query. This function returns the modified query. It is mostly useful for debugging purposes.
これはxmlに解析するのに役立ちます。