QT学习:获取文件详细信息

利用QFileInfo类获得文件信息,详细代码如下:
(1)在头文件“fileinfo.h”中,类FileInfo继承自QDialog类,此类中声明了用到的各种相关控件和函数,其代码如下:

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QCheckBox>
class FileInfo : public QDialog
{
    Q_OBJECT
public:
    FileInfo(QWidget *parent = 0,Qt::WindowFlags f=0);
    ~FileInfo();
public slots:
    void slotFile();
    void slotGet();
private:
    QLabel *fileNameLabel;
    QLineEdit *fileNameLineEdit;
    QPushButton *fileBtn;
    QLabel *sizeLabel;
    QLineEdit *sizeLineEdit;
    QLabel *createTimeLabel;
    QLineEdit *createTimeLineEdit;
    QLabel *lastModifiedLabel;
    QLineEdit *lastModifiedLineEdit;
    QLabel *lastReadLabel;
    QLineEdit *lastReadLineEdit;
    QLabel *propertyLabel;
    QCheckBox *isDirCheckBox;
    QCheckBox *isFileCheckBox;
    QCheckBox *isSymLinkCheckBox;
    QCheckBox *isHiddenCheckBox;
    QCheckBox *isReadableCheckBox;
    QCheckBox *isWritableCheckBox;
    QCheckBox *isExecutableCheckBox;
    QPushButton *getBtn;
}; 

(2)源文件“fileinfo.cpp”的代码如下:

#include "fileinfo.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QFileDialog>
#include <QDateTime>
FileInfo::FileInfo(QWidget *parent,Qt::WindowFlags f)
    : QDialog(parent,f)
{
    fileNameLabel = new QLabel(tr("文件名:"));
    fileNameLineEdit = new QLineEdit;
    fileBtn = new QPushButton(tr("文件"));
    sizeLabel = new QLabel(tr("大小:"));
    sizeLineEdit = new QLineEdit;
    createTimeLabel = new QLabel(tr("创建时间:"));
    createTimeLineEdit = new QLineEdit;
    lastModifiedLabel = new QLabel(tr("最后修改时间:"));
    lastModifiedLineEdit = new QLineEdit;
    lastReadLabel = new QLabel(tr("最后访问时间:"));
    lastReadLineEdit = new QLineEdit;
    propertyLabel = new QLabel(tr("属性:"));
    isDirCheckBox = new QCheckBox(tr("目录"));
    isFileCheckBox = new QCheckBox(tr("文件"));
    isSymLinkCheckBox = new QCheckBox(tr("符号连接"));
    isHiddenCheckBox = new QCheckBox(tr("隐藏"));
    isReadableCheckBox = new QCheckBox(tr("读"));
    isWritableCheckBox = new QCheckBox(tr("写"));
    isExecutableCheckBox = new QCheckBox(tr("执行"));
    getBtn = new QPushButton(tr("获得文件信息"));
    QGridLayout *gridLayout = new QGridLayout;
    gridLayout->addWidget(fileNameLabel,0,0);
    gridLayout->addWidget(fileNameLineEdit,0,1);
    gridLayout->addWidget(fileBtn,0,2);
    gridLayout->addWidget(sizeLabel,1,0);
    gridLayout->addWidget(sizeLineEdit,1,1,1,2);
    gridLayout->addWidget(createTimeLabel,2,0);
    gridLayout->addWidget(createTimeLineEdit,2,1,1,2);
    gridLayout->addWidget(lastModifiedLabel,3,0);
    gridLayout->addWidget(lastModifiedLineEdit,3,1,1,2);
    gridLayout->addWidget(lastReadLabel,4,0);
    gridLayout->addWidget(lastReadLineEdit,4,1,1,2);
    QHBoxLayout *layout2 = new QHBoxLayout;
    layout2->addWidget(propertyLabel);
    layout2->addStretch();
    QHBoxLayout *layout3 = new QHBoxLayout;
    layout3->addWidget(isDirCheckBox);
    layout3->addWidget(isFileCheckBox);
    layout3->addWidget(isSymLinkCheckBox);
    layout3->addWidget(isHiddenCheckBox);
    layout3->addWidget(isReadableCheckBox);
    layout3->addWidget(isWritableCheckBox);
    layout3->addWidget(isExecutableCheckBox);
    QHBoxLayout *layout4 = new QHBoxLayout;
    layout4->addWidget(getBtn);
    QVBoxLayout *mainLayout = new QVBoxLayout(this);
    mainLayout->addLayout(gridLayout);
    mainLayout->addLayout(layout2);
    mainLayout->addLayout(layout3);
    mainLayout->addLayout(layout4);
    connect(fileBtn,SIGNAL(clicked()),this,SLOT(slotFile()));
    connect(getBtn,SIGNAL(clicked()),this,SLOT(slotGet()));
}

槽函数slotFile()完成通过标准文件对话框获得所需要文件的文件名功能,其具体内容如下:

void FileInfo::slotFile() 
{ 
QString fileName = QFileDialog::getOpenFileName(this,"打开","/", "files (*)"); 
fileNameLineEdit->setText(fileName); 
} 

槽函数slotGet()通过QFileInfo获得具体的文件信息,其具体内容如下:

void FileInfo::slotGet()
{
    QString file = fileNameLineEdit->text();
    QFileInfo info(file);					//根据输入参数创建一个QFileInfo对象
    qint64 size = info.size();				//获得QFileInfo对象的大小
    QDateTime created = info.created();
											//获得QFileInfo对象的创建时间
    QDateTime lastModified = info.lastModified();
											//获得QFileInfo对象的最后修改时间
    QDateTime lastRead = info.lastRead();
											//获得QFileInfo对象的最后访问时间
    /* 判断QFileInfo对象的文件类型属性 */
    bool isDir = info.isDir();				//是否为目录
    bool isFile = info.isFile();			//是否为文件
    bool isSymLink = info.isSymLink();		
    bool isHidden = info.isHidden();		//判断QFileInfo对象的隐藏属性
    bool isReadable = info.isReadable();	//判断QFileInfo对象的读属性
    bool isWritable = info.isWritable();	//判断QFileInfo对象的写属性
    bool isExecutable = info.isExecutable();//判断QFileInfo对象的可执行属性
    /* 根据上面得到的结果更新界面显示 */
    sizeLineEdit->setText(QString::number(size));
    createTimeLineEdit->setText(created.toString());
    lastModifiedLineEdit->setText(lastModified.toString());
    lastReadLineEdit->setText(lastRead.toString());
    isDirCheckBox->setCheckState(isDir?Qt::Checked:Qt::Unchecked);
    isFileCheckBox->setCheckState(isFile?Qt::Checked:Qt::Unchecked);
    isSymLinkCheckBox->setCheckState(isSymLink?Qt::Checked:Qt::Unchecked);
    isHiddenCheckBox->setCheckState(isHidden?Qt::Checked:Qt::Unchecked);
    isReadableCheckBox->setCheckState(isReadable?Qt::Checked:Qt::Unchecked);
    isWritableCheckBox->setCheckState(isWritable?Qt::Checked:Qt::Unchecked);
    isExecutableCheckBox->setCheckState(isExecutable?Qt::Checked:Qt::Unchecked);
}

(3)运行结果如下图所示。选择想查看的文件,即可查看文件信息。
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值