C++ QDataWidgetMapper和QDateEdit值

C++ QDataWidgetMapper和QDateEdit值,c++,qt,qtsql,qsqltablemodel,qdatetime,C++,Qt,Qtsql,Qsqltablemodel,Qdatetime,我有QSqlTableModel和一些表,让我们假设它是一个 model->setTable("Person"); 我还有QDataWidgetMapper,它可以将一些小部件(行编辑等)映射到模型中适当的列。 因此问题出在QDateEdit元素中 mapper->addMapping(birthEdit, Person_Birthdate); 当我在birthdedit(QDateEdit)中更改日期时,相应表中的值实际上没有更改,因为它们以不同的格式存储,我还收到一个错误:

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

model->setTable("Person");
我还有QDataWidgetMapper,它可以将一些小部件(行编辑等)映射到模型中适当的列。
因此问题出在
QDateEdit
元素中

mapper->addMapping(birthEdit, Person_Birthdate);
当我在
birthdedit
QDateEdit
)中更改日期时,相应表中的值实际上没有更改,因为它们以不同的格式存储,我还收到一个错误:

"QODBCResult::exec: unable to bind variable: "[Microsoft][ODBC SQL Server Driver]...".
数据库中的日期存储在“yyyy-MM-dd”中,而
QDateEdit
以另一种形式返回日期(我想是这样)。据我所知,
QDataWidgetMapper
使用映射小部件中的用户属性来获取/设置值


我怎样才能解决我的问题

您有两种方法可供选择:

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

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


文件为空,没有任何信息。我尝试了第一种方法-子类QSqlRelationaDelegate等,它很有帮助,谢谢。你能解释一下“扩展QDateEdit并使其处理时间戳数据并转换为QDate对象”是什么意思吗?@ScienceSE:啊,你说得对。我这边有点复制/粘贴错误,呵呵。现在已经修好了,你也可以在那里得到更多关于第二种解决方案的解释。谢谢。但我认为本文中的示例是不完整的,因为作者忘了将NOTIFY dateChanged信号添加到他的类中:)无论如何,我已经理解了总体思路。