ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Qdir

2020-11-22 20:34:02  阅读:181  来源: 互联网

标签:string list QDir Qdir QString dir FileView


 

 

qint64 du(const QString &path)
{
    QDir dir(path);
    qint64 size = 0;
    foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))
    {
        size += fileInfo.size();
    }

    foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))
    {
        size += du(path+QDir::separator()+subDir);
    }

    char unit ='B';
    qint64 curSize=size;
    if(curSize>1024)
    {
        curSize/=1024;
        unit ='K';
        if(curSize>1024)
        {
            curSize/=1024;
            unit ='M';
            if(curSize>1024)
            {
                curSize/=1024;
                unit ='G';
            }
        }
    }
    qDebug()<<curSize<<unit<<"\t"<<qPrintable(path)<<endl;
    return size;
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QStringList args = a.arguments();
    QString path;
    if(args.count()>1)
    {
        path = args[1];
    }
    else
    {
        path = QDir::currentPath();
    }

    qDebug()<<path<<endl;

    du(path);

    return a.exec();
}






foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))






--------------

FileView::FileView(QWidget *parent,Qt::WindowFlags f)
    : QDialog(parent,f)
{
    setWindowTitle(tr("File View"));

    fileLineEdit = new QLineEdit(tr("/"));
    fileListWidget = new QListWidget;

    mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(fileLineEdit);
    mainLayout->addWidget(fileListWidget);

    connect(fileLineEdit,SIGNAL(returnPressed()),this,SLOT(slotShow(QDir)));
    connect(fileListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(slotDirShow(QListWidgetItem*)));

    QString root = "/";
    QDir rootDir(root);
    QStringList string;
    string << "*";
    QFileInfoList list=rootDir.entryInfoList(string);
    showFileInfoList(list);
}

FileView::~FileView()
{
    
}

void FileView::slotShow(QDir dir)
{
    QStringList string;
    string<<"*";
    QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst);
    showFileInfoList(list);
}

void FileView::showFileInfoList(QFileInfoList list)
{
    fileListWidget->clear();
    for(unsigned int i=0;i<list.count();i++)
    {
        QFileInfo tmpFileInfo=list.at(i);
        if(tmpFileInfo.isDir())
        {
            QIcon icon("dir.png");
            QString fileName = tmpFileInfo.fileName();
            QListWidgetItem *tmp = new QListWidgetItem(icon,fileName);
            fileListWidget->addItem(tmp);
        }
        else if(tmpFileInfo.isFile())
        {
            QIcon icon("file.png");
            QString fileName=tmpFileInfo.fileName();
            QListWidgetItem *tmp = new QListWidgetItem(icon,fileName);
            fileListWidget->addItem(tmp);
        }
    }
}

void FileView::slotDirShow(QListWidgetItem * item)
{
    QString str=item->text();
    QDir dir;
    dir.setPath(fileLineEdit->text());
    dir.cd(str);
    fileLineEdit->setText(dir.absolutePath());
    slotShow(dir);
}




    dir.setPath(fileLineEdit->text());
    dir.cd(str);
dir.absolutePath()
QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst);





标签:string,list,QDir,Qdir,QString,dir,FileView
来源: https://www.cnblogs.com/laowang001/p/14021131.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有