当前位置:   article > 正文

Qt实现文件管理器_qt仿文件管理器

qt仿文件管理器

Windows的资源管理器,大家很熟悉吧,可以放回上一级,查找到下一级………Qt中QDir 类可以实现显示文件系统目录的效果。

笔者的机器环境:Windows8.1

  1. //fileview_widget.h
  2. #ifndef FILEVIEWWIDGET_H
  3. #define FILEVIEWWIDGET_H
  4. #include <QWidget>
  5. #include <QDir>
  6. #include <QListWidgetItem>
  7. #include <QFileInfoList>
  8. #include <QListWidget>
  9. #include <QLineEdit>
  10. #include <QVBoxLayout>
  11. #include <QIcon>
  12. #include <QStringList>
  13. class FileViewWidget : public QWidget
  14. {
  15. Q_OBJECT
  16. public:
  17. FileViewWidget(QWidget *parent=0);
  18. //—用双击浏览器中显示的目录进入下一级,或者返回上一级目录。
  19. void showFileInfoList(QFileInfoList list);
  20. public slots:
  21. //–显示当前目录下的所有文件
  22. void slotShow(QDir dir);
  23. //—-根据选择显示下一级目录下的文件,
  24. void slotDirShow(QListWidgetItem *Item);
  25. private:
  26. QLineEdit *fileLineEdit;
  27. QListWidget *fileListWidget;
  28. QVBoxLayout *vLayout;
  29. QFileInfoList list;
  30. };
  31. #endif //FILEVIEWWIDGET_H

 

  1. //fileview_widget.cpp
  2. #include “fileview_widget.h”
  3. #include<QTextCodec>
  4. FileViewWidget::FileViewWidget(QWidget *parent/*=0*/) :QWidget(parent)
  5. {
  6. //—–实例化对象
  7. fileLineEdit = new QLineEdit(“/”, this);
  8. fileListWidget = new QListWidget(this);
  9. //—布局
  10. vLayout = new QVBoxLayout(this);
  11. vLayout->addWidget(fileLineEdit);
  12. vLayout->addWidget(fileListWidget);
  13. //–设置对应信号与槽
  14. connect(fileLineEdit, SIGNAL(returnPressed()),
  15. this, SLOT(slotDirShow(QDir)));
  16. connect(fileListWidget, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
  17. this, SLOT(slotDirShow(QListWidgetItem*)));
  18. QString rootStr =/”;
  19. QDir rootDir(rootStr);
  20. QStringList stringlist;
  21. stringlist <<*”;
  22. list = rootDir.entryInfoList(stringlist);
  23. showFileInfoList(list);
  24. //—显示布局
  25. setLayout(vLayout);
  26. //—-设置窗口属性
  27. setWindowTitle(”File View”);
  28. }
  29. //–显示当前目录下的所有文件
  30. void FileViewWidget::slotShow(QDir dir)
  31. {
  32. QStringList stringList;
  33. stringList <<*”;
  34. QFileInfoList InfoList = dir.entryInfoList(stringList, QDir :: AllEntries, QDir :: DirsFirst);
  35. showFileInfoList(InfoList);
  36. }
  37. //—用双击浏览器中显示的目录进入下一级,或者返回上一级目录。
  38. void FileViewWidget::showFileInfoList(QFileInfoList list)
  39. {
  40. //–清空列表控件
  41. fileListWidget->clear();
  42. //—-取出所有项,按照目录,文件方式添加到控件内
  43. for (unsigned int i = 0; i < list.count(); i++)
  44. {
  45. QFileInfo tmpFileInfo = list.at(i);
  46. if (tmpFileInfo.isDir())
  47. {
  48. QIcon icon(”dir.png”);
  49. QString fileName = tmpFileInfo.fileName();
  50. QListWidgetItem*tmpListWidgetItem = new QListWidgetItem(icon, fileName);
  51. fileListWidget->addItem(tmpListWidgetItem);
  52. }
  53. else
  54. {
  55. QIcon icon(”file.png”);
  56. QString fileName = tmpFileInfo.fileName();
  57. QListWidgetItem*tmpListWidgetItem = new QListWidgetItem(icon, fileName);
  58. fileListWidget->addItem(tmpListWidgetItem);
  59. }
  60. }
  61. }
  62. //—-根据用户的选择显示下一级目录下的文件,
  63. void FileViewWidget::slotDirShow(QListWidgetItem *Item)
  64. {
  65. //—-保存下一级目录名
  66. QString string = Item->text();
  67. QDir dir;
  68. //—-设置路径为当前目录路径
  69. dir.setPath(fileLineEdit->text());
  70. //—–重新设置路径
  71. dir.cd(string);
  72. //—-更新当前显示路径, 这里获取的是绝对路径
  73. fileLineEdit->setText(dir.absolutePath());
  74. //—显示当前文件目录下的所有文件
  75. slotShow(dir);
  76. }
  1. //main.cpp
  2. #pragma once
  3. #include <QtWidgets/QApplication>
  4. #include “fileview_widget.h”
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. FileViewWidget win;
  9. win.show();
  10. return a.exec();
  11. }

 

 下面是运行结果

 

                                                     

这里笔者列出关于QDir::Filter 的过滤方式,信息来源:assistant

  1. Constant Value Description
  2. QDir::Dirs 0x001 List directories that match the filters.
  3. QDir::AllDirs 0x400 List all directories; i.e. don't apply the filters to directory names.
  4. QDir::Files 0x002 List files.
  5. QDir::Drives 0x004 List disk drives (ignored under Unix).
  6. QDir::NoSymLinks 0x008 Do not list symbolic links (ignored by operating systems that don't support symbolic links).
  7. QDir::NoDotAndDotDot NoDot | NoDotDot Do not list the special entries "." and "..".
  8. QDir::NoDot 0x2000 Do not list the special entry ".".
  9. QDir::NoDotDot 0x4000 Do not list the special entry "..".
  10. QDir::AllEntries Dirs | Files | Drives List directories, files, drives and symlinks (this does not list broken symlinks unless you specify System).
  11. QDir::Readable 0x010 List files for which the application has read access. The Readable value needs to be combined with Dirs or Files.
  12. QDir::Writable 0x020 List files for which the application has write access. The Writable value needs to be combined with Dirs or Files.
  13. QDir::Executable 0x040 List files for which the application has execute access. The Executable value needs to be combined with Dirs or Files.
  14. QDir::Modified 0x080 Only list files that have been modified (ignored on Unix).
  15. QDir::Hidden 0x100 List hidden files (on Unix, files starting with a ".").
  16. QDir::System 0x200 List system files (on Unix, FIFOs, sockets and device files are included; on Windows, .lnk files are included)
  17. QDir::CaseSensitive 0x800 The filter should be case sensitive.

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/764658
推荐阅读
相关标签
  

闽ICP备14008679号