Qt4 QSqlTableModel/QTableView将查询解析为xml

Qt4 QSqlTableModel/QTableView将查询解析为xml,qt4,qsqltablemodel,Qt4,Qsqltablemodel,这是我在这个论坛上的第一篇帖子,我希望我要解决的问题能得到清楚的解释。我正在使用QSqlTableModel和QSqlTableView查看数据库的表。缓存表模型是我一直在寻找的,这就是为什么我选择QSqlTableModel(还有其他模型吗?)。现在,我需要将缓存的所有查询解析为xml,一旦我执行submitAll()-我选择OnManualSubmit作为编辑策略。我尝试编写QSqlTableModel的子类并重载insertRowInTable/UpdateRowWinTable/dele

这是我在这个论坛上的第一篇帖子,我希望我要解决的问题能得到清楚的解释。我正在使用QSqlTableModel和QSqlTableView查看数据库的表。缓存表模型是我一直在寻找的,这就是为什么我选择QSqlTableModel(还有其他模型吗?)。现在,我需要将缓存的所有查询解析为xml,一旦我执行submitAll()-我选择OnManualSubmit作为编辑策略。我尝试编写QSqlTableModel的子类并重载insertRowInTable/UpdateRowWinTable/deleteRowFromTable,但缓存是通过指向私有类的d指针访问的,我没有找到其他方法来获取缓存的准备语句,然后将它们解析为xml。这是我认为不可能的解决方案吗


我期待任何答复

QSqlTableModel继承QSqlQueyModel,该模型具有公共

QSqlQuery QSqlQueryModel::query () const
您可以连接到QSqlTableModel发出的四个更改信号

void    beforeDelete ( int row )
void    beforeInsert ( QSqlRecord & record )
void    beforeUpdate ( int row, QSqlRecord & record )
void    primeInsert ( int row, QSqlRecord & record )
(问题:我认为primeInsert和BeforeSert可以为同一事件发出,但不确定)

子类并重新实现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