我有以下問題。QTreeView和QSqlQueryModel - 根據需要從sql數據庫加載兒童
我想爲我的QTreeView實現一個模型,它將動態地從sql表中加載數據。
表看起來是這樣的:
CREATE TABLE xcmObjects
(
id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
id_parent INT DEFAULT 0 NOT NULL ,
title TEXT
);
id_parent包含父記錄的ID - 使他們形成一個結構。
我希望我的模型只在需要時從該表中加載數據。換句話說,我不想將完整的結構加載到內存中,而是不想讀取僅由用戶打開的那些節點的子節點。
QSqlQueryModel和QSqlTableModel似乎只適用於平面表。
我認爲這個問題的一個解決方案是實現自定義QAbastractItemModel類和店內獨立的QSqlQueryModel實例爲每個打開的節點(包括頂級不可見的父節點)。然後重寫每個方法並將請求轉發給合適的模型。
也許有一些更簡單的解決方案? :-)
感謝您的幫助。
爲什麼你不想實現你自己的模型,而不在裏面存儲幾個QSqlQueryModels?以QT樹模型爲例,創建自己的項目,爲其添加延遲初始化,使初始化程序執行QSqlQuery,這是非常簡單的... – Raiv 2011-05-24 09:44:24
謝謝Raiv :)我正在考慮你的想法。爲了告訴你實際情況,我寧願不爲已在查詢結果中完整描述的節點分配額外的內存。 – Seba 2011-05-26 11:21:11