QT 获取文件属性对话框

记录一个初学小白的学习过程,记录一些浅显的学习笔记


实现一个对话框,可以通过文件路径找到文件,并且显示出文件的大小、创建时间、修改时间、最后访问时间、以及文件的属性。

基类: QDialog

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

#include <QLabel>
#include <QLineEdit>
#include <QCheckBox>
#include <QPushButton>
#include <QFileDialog>  //引用文件对话框

#include <QDateTime>
#include <QHBoxLayout>
#include <QVBoxLayout>


class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
private:
    QLabel *labelfilename;
    QLineEdit *qlineeditfilename;
    QPushButton *qpushbuttongetfilename;

    //文件容量大小
    QLabel *labelfilesize;
    QLineEdit *qlineeditfilesize;

    //文件创建时间
    QLabel *labelfilecreatetime;
    QLineEdit *qlineeditfilecreatetime;

    //文件修改时间
    QLabel *labelfilemodifytime;
    QLineEdit *qlineeditfilemodifytime;

    //文件访问时间
    QLabel *labelfileaccesstime;
    QLineEdit *qlineeditfileaccesstime;

    //文件属性以及复选框
    QLabel *glabelfileattribute;

    QCheckBox *qcheckboxisfile;
    QCheckBox *qcheckboxishide;
    QCheckBox *qcheckboxisreadable;
    QCheckBox *qcheckboxiswritable;
    QCheckBox *qcheckboxisexecute;
    QPushButton *qpushbuttongetfileattributeinfo;
private slots:
    void getfilepathname();
    void getfileattributeinfo();
};
#endif // DIALOG_H
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("获取文件属性项目实战模块");

    labelfilename=new QLabel("文件路径名称:");
    qlineeditfilename=new QLineEdit;
    qpushbuttongetfilename=new QPushButton("打开文件...");

    labelfilesize=new QLabel("文件容量大小:");
    qlineeditfilesize=new QLineEdit;

    labelfilecreatetime=new QLabel("文件创建时间:");
    qlineeditfilecreatetime=new QLineEdit;

    labelfilemodifytime=new QLabel("文件修改时间:");
    qlineeditfilemodifytime=new QLineEdit;

    labelfileaccesstime=new QLabel("文件访问时间:");
    qlineeditfileaccesstime=new QLineEdit;

    glabelfileattribute=new QLabel("文件属性");

    qcheckboxisfile=new QCheckBox("文件");
    qcheckboxishide=new QCheckBox("隐藏属性");
    qcheckboxisreadable=new QCheckBox("只读属性");
    qcheckboxiswritable=new QCheckBox("只写属性");
    qcheckboxisexecute=new  QCheckBox("执行权限");
    qpushbuttongetfileattributeinfo=new QPushButton("获取文件属性的全部数据信息...");

    //表格布局
    QGridLayout *glayout=new QGridLayout;
    glayout->addWidget(labelfilename,0,0);
    glayout->addWidget(qlineeditfilename,0,1);
    glayout->addWidget(qpushbuttongetfilename,0,2);

    glayout->addWidget(labelfilesize,1,0);
    glayout->addWidget(qlineeditfilesize,1,1,1,2);

    glayout->addWidget(labelfilecreatetime,2,0);
    glayout->addWidget(qlineeditfilecreatetime,2,1,1,2);

    glayout->addWidget(labelfilemodifytime,3,0);
    glayout->addWidget(qlineeditfilemodifytime,3,1,1,2);

    glayout->addWidget(labelfileaccesstime,4,0);
    glayout->addWidget(qlineeditfileaccesstime,4,1,1,2);

    //水平布局
    QHBoxLayout *hlayout=new QHBoxLayout;
    hlayout->addWidget(glabelfileattribute);
    hlayout->addStretch();  

    QHBoxLayout *hlayoutat=new QHBoxLayout;
    hlayoutat->addWidget(qcheckboxisfile);
    hlayoutat->addWidget(qcheckboxishide);
    hlayoutat->addWidget(qcheckboxisreadable);
    hlayoutat->addWidget(qcheckboxiswritable);
    hlayoutat->addWidget(qcheckboxisexecute);

    QHBoxLayout *hlayoutbutton =new QHBoxLayout;
    hlayoutbutton->addWidget(qpushbuttongetfileattributeinfo);

    //垂直布局
    QVBoxLayout *vlayout=new QVBoxLayout(this);
    vlayout->addLayout(glayout);
    vlayout->addLayout(hlayout);
    vlayout->addLayout(hlayoutat);
    vlayout->addLayout(hlayoutbutton);


    //信号与槽函数
    connect(qpushbuttongetfilename,SIGNAL(clicked()),this,SLOT(getfilepathname()));
    connect(qpushbuttongetfileattributeinfo,SIGNAL(clicked()),this,SLOT(getfileattributeinfo()));
}

Dialog::~Dialog()
{
}

void Dialog::getfilepathname()  //获取文件路径函数
{
    QString filepathname;
    //打开文件操作
    filepathname=QFileDialog::getOpenFileName(this,"打开文件对话框","/","files(*)");
    qlineeditfilename->setText(filepathname);

}
void Dialog::getfileattributeinfo() //获取文件属性函数
{
    QString strfile=qlineeditfilename->text();

    QFileInfo qfi(strfile);   //获取文件各种信息的类,把这个文件路径的文件信息全部放到qfi这个变量,可以调用各种API访问

    qint64 filesize= qfi.size(); // 获取文件容量大小
    QDateTime createtime=qfi.birthTime(); //文件创建时间 created已经被弃用
    QDateTime lastmodifytime=qfi.lastModified(); //文件最后修改时间
    QDateTime lastaccesstime=qfi.lastRead();  //最后访问时间

    bool bfile=qfi.isFile(); //是不是文件
    bool bhide=qfi.isHidden();
    bool bread=qfi.isReadable();
    bool bwirte=qfi.isWritable();
    bool bexecute=qfi.isExecutable(); //是否有执行权限

    bool bdir=qfi.isDir(); //是否是文件夹

    qlineeditfilesize->setText(QString::number(filesize));  //把int型变为string
    qlineeditfilecreatetime->setText(createtime.toString());  //把时间转换为 string
    qlineeditfileaccesstime->setText(lastaccesstime.toString());
    qlineeditfilemodifytime->setText(lastmodifytime.toString());

    qcheckboxisfile->setCheckState(bfile?Qt::Checked:Qt::Unchecked);
    qcheckboxishide->setCheckState(bhide?Qt::Checked:Qt::Unchecked);
    qcheckboxisreadable->setCheckState(bread?Qt::Checked:Qt::Unchecked);
    qcheckboxiswritable->setCheckState(bwirte?Qt::Checked:Qt::Unchecked);
    qcheckboxisexecute->setCheckState(bexecute?Qt::Checked:Qt::Unchecked);
}


 gg,推荐课程:https://xxetb.xetslk.com/s/kNPSd

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值