QDataWidgetMapper和QDateEdit值

时间:2014-01-05 17:44:02

标签: c++ qt qtsql qsqltablemodel qdatetime

我有QSqlTableModel和一些表,让我们假设它是一个

model->setTable("Person");

我还有QDataWidgetMapper,它将一些小部件(lineedits等)映射到模型中的相应列。
所以问题出在QDateEdit元素中。

mapper->addMapping(birthEdit, Person_Birthdate);

当我在birthEditQDateEdit)中更改日期时,在相应的表中实际上没有更改这些值,因为它们以不同的格式存储,我也收到错误:

"QODBCResult::exec: unable to bind variable: "[Microsoft][ODBC SQL Server Driver]...".

数据库中的日期存储在“yyyy-MM-dd”中,而QDateEdit则将日期存储在另一个中(我猜)。据我所知QDataWidgetMapper使用映射小部件中的USER属性来获取/设置值。

如何解决我的问题?

1 个答案:

答案 0 :(得分:2)

根据following page,您有两种方法:

  • 子类QSqlRelationalDelegate并在setEditorData和setModelData方法中进行适当的更改。

  • 扩展QDateEdit并使其处理时间戳数据并转换为QDate对象。