Qt-计算目录下图片文件大小+qlonglong类型转换

.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    qlonglong imageSpace(const QString&path);
    ~Widget();
};
#endif // WIDGET_H

x.cpp

#include "widget.h"
#include "QtWidgets"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{

}
qlonglong Widget::imageSpace(const QString &path)
{
    QDir dir(path);
    qlonglong size=0;
    QStringList filters;
    foreach (QByteArray format, QImageReader::supportedImageFormats()) {
        filters+="*."+format;
    }
    foreach (QString file, dir.entryList(filters,QDir::Files)) {
        size+=QFileInfo(dir,file).size();
    }
    foreach (QString subDir, dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)) {
        size+=imageSpace(path+QDir::separator()+subDir);
    }
    return size;
}
Widget::~Widget()
{
}


main.cpp

#include "widget.h"
#include "QtWidgets"
#include "iostream"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QStringList args=QCoreApplication::arguments();
    QString path="D:/testimage/";
    //QString path=QDir::currentPath();
    Widget w;
    if (args.count()>1)
    {
        path[1];
    }
    std::cout<<"Space used by images in "<<qPrintable(path)
            <<"and its subdirectories is "
           <<(w.imageSpace(path)/1024)<<" KB"<<std::endl;

    QVBoxLayout *layout = new QVBoxLayout;
    QLineEdit *lineEdit=new QLineEdit();
    layout->addWidget(lineEdit);
    qlonglong c=w.imageSpace(path)/1024;
    
    //类型转换 QString::number  and QString::setNum
    lineEdit->setText("Space used by images in " + QString(qPrintable(path))
                      + "and its subdirectories is " + QString::number(c) +" KB");

    w.setLayout(layout);
    w.show();
    return a.exec();
}

类型转换

QString &setNum ( int n, int base = 10 )
QString &setNum ( uint n, int base = 10 )
QString &setNum ( long n, int base = 10 )
QString &setNum ( ulong n, int base = 10 )
QString &setNum ( qlonglong n, int base = 10 )
QString &setNum ( qulonglong n, int base = 10 )
QString &setNum ( short n, int base = 10 )
QString &setNum ( ushort n, int base = 10 )
QString &setNum ( double n, char format = 'g', int precision = 6 )
QString &setNum ( float n, char format = 'g', int precision = 6 )
//setNum()方法将数字n以进制base转换为QString,功能类似于QString的静态函数number()。


//示例:
QString str1;
str1.setNum(100, 16);
//将10进制表示的100,转换为16进制表示的QString,则str1中的结果为"64"

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值