您的位置:首页 > 编程语言 > Qt开发

Qt创建文件浏览器

2015-11-08 20:26 567 查看
Qt创建文件浏览器
文档名称

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 );

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: