Qt创建文件浏览器
2015-11-08 20:26
567 查看
Qt创建文件浏览器
一、综述。
文件系统的浏览是文件操作的一个常用功能。本实例实现一个文件系统的浏览功能,可以浏览所有的文件。在本实例中,用户可以双击浏览器中显示的目录进入某一级目录,或单击“..”返回上一级目录,顶部的编辑框显示当前所在的目录路径,列表中显示该目录下的所有文件。
QDir类的entryInfoList()方法是按照某种过滤方式获得目录下的文件列表,函数原型如下:
QFileInfoList QDir::entryInfoList( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSotr ) const;
其中,参数nameFilters制定了文件名的过滤方式,如“*”,“.tar.gz”;参数filters指定文件属性的过滤方式,如目录、文件、读写属性等,QDir::Filter定义了一系列的过滤方式。
二、实例。
“fileViewer.h”代码:
class fileViwer : public QDialog
{
Q_OBJECT
public:
fileViwer(QWidget *parent = 0, Qt::WFlags flags = 0);
~fileViwer();
protected slots:
void slotShowDir( QListWidgetItem * item );
private:
void showFileInfoList( QFileInfoList list );
private:
QLineEdit * pLineEditDir;
QListWidget * pListWidgetFile;
};
“fileViewer”代码:
fileViwer::fileViwer(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
setWindowTitle( tr( "File Viewer" ) );
pLineEditDir = new QLineEdit();
pLineEditDir->setText( tr( "C:/" ) );
pListWidgetFile = new QListWidget();
QVBoxLayout * pVLayout = new QVBoxLayout( this );
pVLayout->addWidget( pLineEditDir );
pVLayout->addWidget( pListWidgetFile );
connect( pListWidgetFile, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ), this, SLOT( slotShowDir( QListWidgetItem * ) ) );
QString root( "C://" );
QDir rootDir( root );
QStringList sList;
sList << "*";
QFileInfoList list = rootDir.entryInfoList( sList );
showFileInfoList( list );
}
fileViwer::~fileViwer()
{
}
void fileViwer::showFileInfoList( QFileInfoList list )
{
pListWidgetFile->clear();
for ( unsigned int i = 0; i < list.count(); i++ )
{
QFileInfo tmpFileInfo = list.at( i );
if ( tmpFileInfo.isDir() )
{
QString fileName = tmpFileInfo.fileName();
QListWidgetItem * pTmp = new QListWidgetItem( QIcon( ".//Resources//dir.png" ), fileName );
pListWidgetFile->addItem( pTmp );
}
else
{
QString fileName = tmpFileInfo.fileName();
QListWidgetItem * pTmp = new QListWidgetItem( QIcon( ".//Resources//file.png" ), fileName );
pListWidgetFile->addItem( pTmp );
}
}
}
void fileViwer::slotShowDir( QListWidgetItem * item )
{
QString str = item->text();
QDir dir;
dir.setPath( pLineEditDir->text() );
dir.cd( str );
pLineEditDir->setText( dir.absolutePath() );
QStringList string;
string << "*";
QFileInfoList list = dir.entryInfoList( string, QDir::AllEntries, QDir::DirsFirst );
showFileInfoList( list );
}
文档名称 | Qt创建文件浏览器 |
创建时间 | 2012-9-13 |
修改时间 | 2012-9-13 |
创建人 | Baifx |
简介(收获) | QDir、QFileInfoList、QListWidget |
文件系统的浏览是文件操作的一个常用功能。本实例实现一个文件系统的浏览功能,可以浏览所有的文件。在本实例中,用户可以双击浏览器中显示的目录进入某一级目录,或单击“..”返回上一级目录,顶部的编辑框显示当前所在的目录路径,列表中显示该目录下的所有文件。
QDir类的entryInfoList()方法是按照某种过滤方式获得目录下的文件列表,函数原型如下:
QFileInfoList QDir::entryInfoList( const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSotr ) const;
其中,参数nameFilters制定了文件名的过滤方式,如“*”,“.tar.gz”;参数filters指定文件属性的过滤方式,如目录、文件、读写属性等,QDir::Filter定义了一系列的过滤方式。
二、实例。
“fileViewer.h”代码:
class fileViwer : public QDialog
{
Q_OBJECT
public:
fileViwer(QWidget *parent = 0, Qt::WFlags flags = 0);
~fileViwer();
protected slots:
void slotShowDir( QListWidgetItem * item );
private:
void showFileInfoList( QFileInfoList list );
private:
QLineEdit * pLineEditDir;
QListWidget * pListWidgetFile;
};
“fileViewer”代码:
fileViwer::fileViwer(QWidget *parent, Qt::WFlags flags)
: QDialog(parent, flags)
{
setWindowTitle( tr( "File Viewer" ) );
pLineEditDir = new QLineEdit();
pLineEditDir->setText( tr( "C:/" ) );
pListWidgetFile = new QListWidget();
QVBoxLayout * pVLayout = new QVBoxLayout( this );
pVLayout->addWidget( pLineEditDir );
pVLayout->addWidget( pListWidgetFile );
connect( pListWidgetFile, SIGNAL( itemDoubleClicked( QListWidgetItem * ) ), this, SLOT( slotShowDir( QListWidgetItem * ) ) );
QString root( "C://" );
QDir rootDir( root );
QStringList sList;
sList << "*";
QFileInfoList list = rootDir.entryInfoList( sList );
showFileInfoList( list );
}
fileViwer::~fileViwer()
{
}
void fileViwer::showFileInfoList( QFileInfoList list )
{
pListWidgetFile->clear();
for ( unsigned int i = 0; i < list.count(); i++ )
{
QFileInfo tmpFileInfo = list.at( i );
if ( tmpFileInfo.isDir() )
{
QString fileName = tmpFileInfo.fileName();
QListWidgetItem * pTmp = new QListWidgetItem( QIcon( ".//Resources//dir.png" ), fileName );
pListWidgetFile->addItem( pTmp );
}
else
{
QString fileName = tmpFileInfo.fileName();
QListWidgetItem * pTmp = new QListWidgetItem( QIcon( ".//Resources//file.png" ), fileName );
pListWidgetFile->addItem( pTmp );
}
}
}
void fileViwer::slotShowDir( QListWidgetItem * item )
{
QString str = item->text();
QDir dir;
dir.setPath( pLineEditDir->text() );
dir.cd( str );
pLineEditDir->setText( dir.absolutePath() );
QStringList string;
string << "*";
QFileInfoList list = dir.entryInfoList( string, QDir::AllEntries, QDir::DirsFirst );
showFileInfoList( list );
}
相关文章推荐
- 【实例】Qt创建程序启动画面
- QT4.8.5+qt-vs-addin-1.1.11+VS2010安装配置和QT工程的新建和加载
- QT之界面实现技巧
- 我的QT5学习之路(二)——第一个程序
- SUMO教程和MeanShift算法图片不可见的,请移步至本人的新浪博客。http://blog.sina.com.cn/qtluyixiao。抱歉给大家带来的不便。
- QT&nbsp;pro文件介绍
- Qt中常见对话框的使用/QMessageBox/QFontDialog/QFileDialog
- QT 4.87 changes
- Tslib和Qt 4.8.4与在开发板上的移植
- Qt在Windows下的三种编程环境搭建
- UFT学习过程中一些小经验
- Qt5多国语言国际化
- Qt图形视图框架
- Qtcreator 常用快捷键总结
- QT调用打印机打印html网页及文件
- 打开qt出现提示无法覆盖文件 /home/xxx/.config/Qtcreator/qtversion.xml : Permission denied
- QT5.5下的USB HID热插拔检测,未全部完成,聊作记录。
- 基于Qt的FreeType字体轮廓解析
- QT中DBus的用法
- qt5 ”cannot open main.obj8942.0.jom to write“错误