【问题标题】:QDataWidgetMapper and QDateEdit valuesQDataWidgetMapper 和 QDateEdit 值
【发布时间】:2014-01-05 17:44:02
【问题描述】:

我有一个带有一些表的 QSqlTableModel,假设它是一个

model->setTable("Person");

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

mapper->addMapping(birthEdit, Person_Birthdate);

当我更改 birthEdit (QDateEdit) 中的日期时,相应表中的值实际上并未更改,因为它们以不同的格式存储,并且我也收到错误消息:

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

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

如何解决我的问题?

【问题讨论】:

    标签: c++ qt qtsql qsqltablemodel qdatetime


    【解决方案1】:

    根据following page,您可以采用两种方法:

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

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

    【讨论】:

    • following page 是空的,根本没有任何信息。我尝试了第一种方法 - 子类 QSqlRelationaDelegate 等,它有所帮助,谢谢。您能否解释一下“扩展 QDateEdit 并使其处理时间戳数据并转换为 QDate 对象”是什么意思?
    • @ScienceSE:啊,你是对的。我这边有一些复制/粘贴错误,呵呵。现在已经修复了,你也可以在那里获得更多关于第二种解决方案的解释。
    • 谢谢。但我认为文章中的示例是不完整的,因为作者忘记添加到他的课程中的 NOTIFY dateChanged 信号:) 无论如何我已经理解了一般想法。
    猜你喜欢
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多