QSqlTableModel/QTableView解析查询到xml

问题描述:

这是我第一次发布到这个论坛,我希望我所要求的解决方案的问题得到了明确解释。我正在使用QSqlTableModel和QSqlTableView来查看数据库的表。高速缓存的表模型就是我正在寻找的,这就是为什么我选择QSqlTableModel(是否有其他模型?)。现在我需要解析xml所有被缓存的查询,一旦我做了submitAll() - 我选择了OnManualSubmit作为编辑策略。我试图编写一个QSqlTableModel的子类并重载insertRowInTable/updateRowInTable/deleteRowFromTable,但是缓存是通过一个指向私有类的d指针访问的,我没有找到另一种获取缓存准备语句的方法,然后将它们解析为xml 。我认为这种解决方案是不可能的吗?QSqlTableModel/QTableView解析查询到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和BeforeInsert可以发射用于相同的事件,不知道以为)

子类和重新实现提交()发出一个信号,其中包含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。