记录一个初学小白的学习过程,记录一些浅显的学习笔记
实现一个对话框,可以通过文件路径找到文件,并且显示出文件的大小、创建时间、修改时间、最后访问时间、以及文件的属性。
基类: 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