Qt获取文件信息
来源:互联网 发布:现在淘宝最新版本 编辑:程序博客网 时间:2024/06/04 17:50
头文件
#ifndef GETFILEINFO_H#define GETFILEINFO_H#include <QWidget>#include <QDragEnterEvent>#include <QDropEvent>namespace Ui {class GetFileInfo;}class GetFileInfo : public QWidget{ Q_OBJECTpublic: explicit GetFileInfo(QWidget *parent = 0); ~GetFileInfo(); void getFileInfo(QString &fileName); qint64 du(QString path); QString changeSizeFmt(qint64 size);protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event); void dragLeaveEvent(QDragLeaveEvent *event);private slots: void on_btn_file_clicked();private: Ui::GetFileInfo *ui; QString m_fileName; //文件名};#endif // GETFILEINFO_H源文件
#include "getfileinfo.h"#include "ui_getfileinfo.h"#include <QDebug>#include <QMimeData>#include <QFileInfo>#include <QFileIconProvider> //根据扩展名获取文件图标、类型#include <QFileDialog>#include <QDir>#include <QDateTime>GetFileInfo::GetFileInfo(QWidget *parent) : QWidget(parent), ui(new Ui::GetFileInfo){ ui->setupUi(this); setAcceptDrops(true); //接受拖拽 ui->groupBox->setEnabled(false);}GetFileInfo::~GetFileInfo(){ delete ui;}//获取文件信息void GetFileInfo::getFileInfo(QString &fileName){ QFileInfo info(fileName); qint64 size; if(info.isDir()){ size = du(fileName); }else if(info.isFile()){ size = info.size(); } QString strSize = changeSizeFmt(size); ui->size_lineEdit->setText(strSize); QString createTime = info.created().toString("yyyy/MM/dd hh:mm:ss ddd"); ui->create_lineEdit->setText(createTime); QString modifyTime = info.lastModified().toString("yyyy/MM/dd hh:mm:ss ddd"); ui->modify_lineEdit->setText(modifyTime); QString readTime = info.lastRead().toString("yyyy/MM/dd hh:mm:ss ddd"); ui->read_lineEdit->setText(readTime); //根据扩展名获取文件图标、类型 QFileIconProvider provider; QString fileType = provider.type(info); ui->type_lineEdit->setText(fileType); QIcon icon = provider.icon(info); setWindowIcon(icon); //设置属性 ui->dir_checkBox->setCheckState( info.isDir() ? Qt::Checked : Qt::Unchecked ); ui->file_checkBox->setCheckState( info.isFile() ? Qt::Checked : Qt::Unchecked ); ui->link_checkBox->setCheckState( info.isSymLink() ? Qt::Checked : Qt::Unchecked ); ui->hide_checkBox->setCheckState( info.isHidden() ? Qt::Checked : Qt::Unchecked ); ui->read_checkBox->setCheckState( info.isReadable() ? Qt::Checked : Qt::Unchecked ); ui->write_checkBox->setCheckState( info.isWritable() ? Qt::Checked : Qt::Unchecked ); ui->execute_checkBox->setCheckState( info.isExecutable() ? Qt::Checked : Qt::Unchecked );}//读取目录以及文件大小qint64 GetFileInfo::du(QString path){ QDir dir(path); qint64 size = 0; foreach (QFileInfo info, dir.entryInfoList(QDir::Files)) { //计算文件大小 size += info.size(); } foreach (QFileInfo subDir, dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { //若存在子目录,则递归调用du函数 size += du(path + QDir::separator() + subDir.fileName()); //补全文件名路径 } return size;}//改变数据大小显示格式QString GetFileInfo::changeSizeFmt(qint64 size){ double curSize = size; QString unit = " B"; if(curSize > 1024){ curSize /= 1024; unit = " KB"; if(curSize > 1024){ curSize /= 1024; unit = " MB"; if(curSize > 1024){ curSize /= 1024; unit = " GB"; } } } QString textSize = QString::number(curSize, 'f', 2); textSize.append(unit); //分离字符串 QString tmpSize = QString::number(size); int count = tmpSize.count(); for(int i = count - 3; i > 0; i -= 3){ tmpSize.insert(i, ","); } tmpSize.append(tr(" 字节")); QString strSize; strSize = textSize + " (" + tmpSize + ")"; return strSize;}void GetFileInfo::dragEnterEvent(QDragEnterEvent *event){ qDebug() << "DragEnter!"; //如果为文件,则支持拖放 if (event->mimeData()->hasFormat("text/uri-list")) event->acceptProposedAction();}void GetFileInfo::dropEvent(QDropEvent *event){ qDebug() << "Drop!"; //注意:这里如果有多文件存在,意思是用户一下子拖动了多个文件,而不是拖动一个目录 //如果想读取整个目录,则在不同的操作平台下,自己编写函数实现读取整个目录文件名 QList<QUrl> urls = event->mimeData()->urls(); if(urls.isEmpty()) return; //往文本框中追加文件名 foreach(QUrl url, urls) { m_fileName = url.toLocalFile(); ui->file_lineEdit->setText(m_fileName); getFileInfo(m_fileName); }}void GetFileInfo::dragLeaveEvent(QDragLeaveEvent *event){ qDebug() << "Drag Leave";}void GetFileInfo::on_btn_file_clicked(){ QString path = QDir::homePath(); m_fileName = QFileDialog::getOpenFileName(this, tr("打开"), path, tr("All Files(*.*)")); if(!m_fileName.isEmpty()){ ui->file_lineEdit->setText(m_fileName); //获取文件信息 getFileInfo(m_fileName); }}
0 0
- QT获取文件信息
- QT获取文件信息
- QT获取文件信息
- Qt获取文件信息
- QT遍历目录获取文件信息
- QT遍历目录获取文件信息
- QT遍历目录获取文件信息
- Qt文件信息获取之QFileInfo
- Qt学习——qt文件信息的获取
- Qt获取天气信息
- Qt获取网络信息
- Qt 获取CPU信息
- Qt获取音频设备信息
- Qt学习之路之获取文件信息
- QT使用QFileInfo类来获取文件信息
- Qt获取系统CPU信息
- qt获取网卡信息 QNetworkInterface
- Qt 获取Windows内存信息
- reboot和init 6的区别
- FatMouse' Trade<hdoj1009>
- 【JVM】——简单入门之内部组成
- 【一】Deep learning简介
- 产品助理day11以及支付宝支付和微信支付的对比
- Qt获取文件信息
- Codeforces 465B Inbox (100500)
- 从上往下打印二叉树
- linux关机/重启命令
- php核心知识点(总结)
- 字符串查找最长子串
- 随想-如何成为出色的程序员
- PAT-1002
- 通向架构师的道路(第一天)之Apache整合Tomcat