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有自己的根节点。

你可能感兴趣的:(qt中数据存储方法(接口)的思路应用1(thinkvd开发日志))