qt做文件浏览器

项目要求做一个文件浏览器,要求文件以列表形式显示,当单击某个目录时,就会进入下层目录,用QT实现。

方法1:用QFileSystemModel或是QDir做model,QTableView做为显示的view。

    采取这种方法的好处是:QFileSystemModel和QDir能自动的读取出当前目录下的文件信息。包括文件的大小,类型等,只要做如下设置就可以将当前目录下           的文件列表显示出来。

    p_mTVFileList->setRootIndex(dirmodel->setRootPath(filename));  //QTableView设置当前的根目录

       要查看view中某个文件或文件夹的信息的时候,只需要知道这个文件所处的index,如下

    dirmodell->fileInfo(p_mTVFileList->currentIndex()); //查看当前文件的文件信息

        但是QFileSystemModel和QDir里的显示都是英文的。可以通过重写QFileSystemModel的headerdata将表头变成中文,但是里面显示的文件信息的中文信          息还不知道怎样变成中文。

方法二:用QListWidget与QDir的entryInfoList实现。entryInfoList的功能比较强大。可以筛选性的读出目录下的文件信息

    这种方法的实现原理是,用entryInfoList读出文件列表。将文件列表里的内容作为QListWidgetItem一项项的显示在QListWidget上,并记住当前的目录,                                                  当点击list的某一项时,通过item->text()获取文件名,从而又通过entryInfoList进入下一级目录,用这种方法只能显示一列

方法三:用QStandardItemModel与QTableView实现,用QDir的entryInfoList获取文件信息,将获取到数据一步步的填到model中进行显示。

    当点击某项之后,通过index.sibling(index.row(),0).data().toString()获取这一行某列的数据,得到文件名

方法四:用Dir的entryInfoList遍历整个的文件夹,将遍历到的结果放在一个QList里面,QList里放的是文件的一些信息,如下

  typedef struct DirNode
  {
   char filename[200];
   bool isDir;
   long parent;
   long child;
   long next;
  }DirNode, *PDirNode;

  将各个文件文件夹用地址串起来,成一个链表

 各个的代码如下:

/Files/chenxuelian/用链表实现的filenode.rar

/Files/chenxuelian/QFileSystemModel实现的fileview.rar

/Files/chenxuelian/普通model和tableview的fileview.rar

/Files/chenxuelian/QListWidget实现的fileview.rar

转载于:https://www.cnblogs.com/chenxuelian/archive/2010/04/12/1710266.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值