2014-01-05 34 views
2

我QSqlTableModel的有一些表格,讓我們假設這是一個QDataWidgetMapper和QDateEdit值

model->setTable("Person"); 

而且我也有QDataWidgetMapper其中MAPPS一些小部件(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屬性來獲取/設置值。

我該如何解決我的問題?

回答

2

你必須採取兩種方法爲每following page

  • 子類QSqlRelationalDelegate,並在setEditorData和setModelData方法作適當調整。

  • 擴展QDateEdit並使其處理時間戳數據並轉換爲QDate對象。

+0

的[下頁](http://qtwiki.remdex.info/How_to_map_QDataWidgetMapper_and_QDateEdit,_QDateTimeEdit_?)是空的,根本沒有信息。 我試過第一種方式 - 子類QSqlRelationaDelegate等,它的幫助,謝謝。 你能解釋一下你是什麼意思「擴展QDateEdit並使其處理時間戳數據並轉換爲QDate對象」? – ScienceSE

+0

@ScienceSE:啊,你說得對。我身邊有一些複製/粘貼錯誤,嘿嘿。現在已經修復了,您還可以在第二個解決方案中獲得更多解釋。 – lpapp

+0

謝謝。但我認爲文章中的例子是不完整的,因爲NOTIFY dateChanged信號是作者忘記添加到他的課堂:)無論如何,我已經理解了這個大概的想法。 – ScienceSE