dialog.cpp代码
#include "dialog.h"
#include "ui_dialog.h"
#include <QAbstractItemView>
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    LineEditDir=ui->lineEdit;
    ListWidgetFile=ui->listWidget;
    LineEditDir->setText("/");
    QString root="/";
    QDir rootDir(root);
    QStringList string;
    string << "*" ;
    QFileInfoList list=rootDir.entryInfoList (string);
    showFileInfoList(list);
    this->setWindowTitle(tr("资源管理器));
}
Dialog::~Dialog()
{
    delete ui;
}
void Dialog::showFileInfoList(QFileInfoList list)
{
    ListWidgetFile->clear();
    itemnum=0;
    ListWidgetFile->setCurrentRow(itemnum);
    m=ListWidgetFile->currentRow();
    for(int i=0;i<list.size();i++)
    {
        QFileInfo tmpFileInfo=list.at(i);
        if(tmpFileInfo.isDir())
        {
            QIcon icon(":/images/dir.png");
            QString filename=tmpFileInfo.fileName();
            QListWidgetItem *tmp=new QListWidgetItem(icon,filename);
            ListWidgetFile->addItem(tmp);
        }
        else if(tmpFileInfo.isFile())
        {
            QIcon icon(":/images/file.png");
            QString filename=tmpFileInfo.fileName();
            QListWidgetItem *tmp=new QListWidgetItem(icon,filename);
            ListWidgetFile->addItem(tmp);
        }
    }
    ListWidgetFile->setItemSelected(ListWidgetFile->item(itemnum),true);
    ListWidgetFile->setCurrentRow(itemnum);
    m=ListWidgetFile->currentRow();
}
void Dialog::slotShow(QDir dir)
{
    QStringList string;
    string<<"*";
    QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst);
    showFileInfoList(list);
}
void Dialog::on_listWidget_itemDoubleClicked(QListWidgetItem* item)
{
    QString str=item->text();
    QDir dir;
    dir.setPath(LineEditDir->text());
    dir.cd(str);
    LineEditDir->setText(dir.absolutePath());
    slotShow(dir);
}
void Dialog::on_listWidget_itemClicked(QListWidgetItem* item)
{
    itemnum=ListWidgetFile->currentRow();
}
void Dialog::on_copyButton_clicked()
{
}
void Dialog::on_pasteButton_clicked()
{
}
void Dialog::on_enterButton_clicked()
{
    QString str;
    str=ListWidgetFile->currentItem()->text();
    QDir dir;
    dir.setPath(LineEditDir->text());
    dir.cd(str);
    LineEditDir->setText(dir.absolutePath());
    slotShow(dir);
}
void Dialog::on_upButton_clicked()
{
    if(itemnum>0)
    {
        itemnum--;
        ListWidgetFile->setItemSelected(ListWidgetFile->item(itemnum),true);
        ListWidgetFile->setCurrentRow(itemnum);
        m=ListWidgetFile->currentRow();
    }
}
void Dialog::on_downButton_clicked()
{
    QDir dir;
    QStringList string;
    dir.setPath(LineEditDir->text());
    string<<"*";
    QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst);
    if(itemnum<list.size()-1)
    {
        itemnum=itemnum+1;
        ListWidgetFile->setItemSelected(ListWidgetFile->item(itemnum),true);
        ListWidgetFile->setCurrentRow(itemnum);
        m=ListWidgetFile->currentRow();
    }
}