【Qt】之 QTreeView和QFileSystemModel
来源:互联网 发布:数据库开发和软件开发 编辑:程序博客网 时间:2024/05/23 11:54
用Qt来显示一个文件目录是很简单的,如下:
例子1:查找显示所有的图片
QFileSystemModel *model = new QFileSystemModel(); model->setRootPath("/"); //model->setFilter(QDir::Dirs|QDir::NoDotAndDotDot); //只显示文件夹 // 设置过滤器 QStringList filter; filter << "*.png" << "*.jpg" << "*.bmp" << "*.gif"; model->setNameFilters(filter); // 没有通过过滤器的文件disable还是隐藏,true为disable false为隐藏 model->setNameFilterDisables(false); mTreeView = new QTreeView(); mTreeView->setAnimated(false); mTreeView->setSortingEnabled(true); mTreeView->setModel(model);
2.设置一些特殊属性的过滤 setFilter 如只显示文件夹或系统文件
3.显示项的名字过滤器这个非常有用,如我们想显示所有的"png,jpg,bmp,gif"图片
4.setNameFilterDisables这个效果如下图:
setNameFilterDisables(false)表示不符合名字过滤要求的隐藏而不是disable
例子2:创建一个简单的可以添加文件夹删除文件夹的资源管理
实现也很简单:
model = new QFileSystemModel(); model->setRootPath(QDir::currentPath()); mTreeView = new QTreeView(); mTreeView->setAnimated(false); mTreeView->setSortingEnabled(true); mTreeView->setModel(model); mTreeView->setRootIndex(model->index(QDir::currentPath())); QPushButton* mkdirButton = new QPushButton(tr("Make directory"), this); QPushButton* rmButton = new QPushButton(tr("Remove"), this); QHBoxLayout* buttonLayout = new QHBoxLayout; buttonLayout->addWidget(mkdirButton); buttonLayout->addWidget(rmButton); QVBoxLayout* layout = new QVBoxLayout(); layout->addWidget(mTreeView); layout->addLayout(buttonLayout); setLayout(layout); setWindowTitle("File system..."); resize(960,640); //connect(mTreeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(on_treeView_doubleClicked(QModelIndex))); connect(mkdirButton, SIGNAL(clicked()), this, SLOT(mkdir())); connect(rmButton, SIGNAL(clicked()), this, SLOT(rm()));
添加目录:
void Dialog::mkdir(){ QModelIndex index = mTreeView->currentIndex(); if ( !index.isValid() ) { return; } QString name = QInputDialog::getText(this, tr("Create directory"), tr("Directory name")); if ( !name.isEmpty() ) { if ( !model->isDir(index) ) { index = model->parent(index); } if ( !model->mkdir(index, name).isValid() ) { QMessageBox::information(this, tr("Create directory failed..."), tr("Failed to create directory")); } }}
删除目录和文件
void Dialog::rm(){ QModelIndex index = mTreeView->currentIndex(); if ( !index.isValid() ) { return; } bool ok; QFileInfo info = model->fileInfo(index); if ( info.isDir() ) { ok = model->rmdir(index); } else { ok = model->remove(index); } if ( !ok ) { QMessageBox::information(this, tr("Removed"), tr("Filed to remove %1").arg(model->fileName(index))); }}
工程如下:
2 0
- 【Qt】之 QTreeView和QFileSystemModel
- qt 之 QFileSystemModel
- qt 之 QFileSystemModel
- Qt中使用QDirModel / QFileSystemModel + QTreeView显示Checkbox复选框
- QSplitter QTreeView QFileSystemModel 简单使用
- Qt学习:项视图类之QDirModel和QTreeView
- Qt之QSS(QTreeView)
- QT之qss教程-QTreeView
- [Qt]QTreeWidget和QTreeView用法
- Qt 学习之路 2(44):QFileSystemModel
- QFileSystemModel
- QFileSystemModel
- QT树控件 QTreeView
- QT树控件 QTreeView
- QT中QTreeView使用
- Qt QFileSystemModel QDirModel 示例代码, 使用方法
- Qt树形控件QTreeView使用
- Qt树形控件QTreeView使用
- Write & Read xml as java class
- Linux开机提示fsck.ext3:Unable to resolve ‘LABLE=XXXX’错误导致无法正常开机解决办法
- [ linux ] linux下配置oracle自启动!
- [Linux]Vim的NERDTree快捷键
- ICCV 2011 Papers List
- 【Qt】之 QTreeView和QFileSystemModel
- Android Activity和Intent机制学习笔记
- 切割NGUI图集
- 逃出你的肖申克(三):遇见20万年前的自己
- java命令行
- android 主题元素映射方式
- 逃出你的肖申克(四):理智与情感
- Android Service生命周期及用法!
- C#学习7