我有一個非常大的樹結構,我不能將完整的樹加載到客戶端的Ram中。我正在使用Qt的QTreeView。在QTreeView異步加載數據
我想在用戶展開元素時動態加載項目的子元素。
當用戶在樹中打開一個項目時是否觸發了一些信號?我正在使用教程Simple Tree Model Example。當我對模型進行更改時,視圖也需要更新。我不想放鬆焦點以避免用戶混淆!
和一定的時間(請求到服務器)後...
我有一個非常大的樹結構,我不能將完整的樹加載到客戶端的Ram中。我正在使用Qt的QTreeView。在QTreeView異步加載數據
我想在用戶展開元素時動態加載項目的子元素。
當用戶在樹中打開一個項目時是否觸發了一些信號?我正在使用教程Simple Tree Model Example。當我對模型進行更改時,視圖也需要更新。我不想放鬆焦點以避免用戶混淆!
和一定的時間(請求到服務器)後...
你需要實現的QAbstractItemModel
可以處理所需的數據量的子類。當一個項目在視圖中展開時,它會調用QAbstractItemModel::rowCount
來確定兒童數量,然後使用QAbstractItemModel::flags
和QAbstractItemModel::data
來獲取兒童數據。如果此時請求的數據不可用,則應返回佔位符數據(即包含「正在加載」的1行)並開始請求。收到數據後,發出rowsAboutToBeInserted
和rowsInserted
信號以通知視圖有關新數據(您還應通知它關於刪除「加載」行)。該視圖將再次調用rowCount
,data
和flags
方法,並且您的模型現在應該提供加載的數據。使用QCache
將上次訪問的數據保存在內存中。
你可以添加一些示例代碼? –