我在一個數據庫上使用Qt的模型視圖編程,其中一個對象使用多個表格表示。假設這完全符合我設計了以下對象和coresponding數據庫表:多個表上的QSqlTableModel
TagObject
- id
- name
- usable
- information
tag_table
- id
- name
- usable
tag_info_table
- id_ref
- info
正如你可以看到,信息財產被分離到另一個表,以防止NULL的存在因爲這個屬性是可選的。
在數據庫中,我有一個視圖,它將這些值彙總到一個'表',可以使用QSqlTableModel
查詢。請注意,INSERT ing數據是不可能的。據我所知,Qt的類不支持數據庫設計,QSqlTableModel
和QSqlRelationalTableModel
都不支持這一點。 (另外QSqlQueryModel
根本不支持插入,所以這是沒有問題的。)
我錯過了什麼嗎?有沒有辦法使用Qt的SQL類來做到這一點?或者如here指出的那樣實現這個子類QSqlQueryModel
的唯一方法?
該模型默認爲只讀模式。爲了使其可讀寫,您必須對其進行子類化並重新實現setData()和flags()。另一種選擇是使用QSqlTableModel,它提供基於單個數據庫表的讀寫模型。
編輯:至於子類,我發現this reference作爲一個很好的切入點。
兩種不同於我的好方法,很好。我會深入研究這一點。 – maxik
我最終在視圖上使用了一個完美的觸發函數。我喜歡將盡可能多的邏輯放入數據庫。謝謝! – maxik
進入另一個與我相關的問題:使用觸發視圖,如何處理不在視圖內的* n:m *關係?有什麼好方法讓他們成爲一體?我有*代理鍵*表映射兩個表的id來獲得關係。 – maxik