1. 程式人生 > >qt中資料儲存方法(介面)的思路應用1(thinkvd開發日誌)

qt中資料儲存方法(介面)的思路應用1(thinkvd開發日誌)

  <qt中資料儲存方法(介面)的思路>個人最早釋出在qtcn bbs http://www.qtcn.org/bbs/read.php?tid=32483中,可能由於比較理論化而讓人感覺其實際應用意義,今後其有相關的應用會逐步寫出來。
   
  關於載入視訊檔案後,資訊還未載入完全,使用者點選播放問題。這時會造成視訊播放由於得不到視訊的時間長度,沒有辦法拖動進度條,Thinkvd video converter存在這個問題,同行業不少的軟體實現用的是彈出dialog, 然後在上面顯示載入檔案進度。當時個人也不理解為什麼這麼做,感覺有點多餘,當thinkvd出現了上面問題之後才感悟到別人的用心良苦。也許有人會說用兩個signal->slot不就完成了,載入檔案時給個signal, 檔案資訊完成之後再發個finished的signal. 這個實現思路是沒有錯的。
  
  這個現象個人也有事無事在思考,也曾經加個一段程式碼把item放到updateUI(),但很快發現它有時造成程式異常(item被刪除情況下),很快刪除了它。
現在在原有的基礎上,不用signal->slot, 實現思路:
1。載入檔案的地方設定:ImListTreeItem::setRootData("item_loading", true);
2。載入資訊完成的地方刪除的:ImListTreeItem::rmRootData("item_loading");
3。狀態update的地方判斷:
void updateUI()
{
............................
 // 加入檔案時資訊還沒有載入完成前選擇了記錄情況.
 bool bLoading = ImListTreeItem::getRootData("item_loading").toBool();
 if (bLoading){
  m_previewBtnPlay->setEnable(false);  //播放按鈕狀態
 }
.............................. 

}

實際上是利用了Item根節點來儲存資料, 每個item有自己的根節點。