首先我们要建立一个简单的窗口程序访问文件的具体信息,当然是先建立好一个项目。
主要就是选择桌面的应用程序,后面的选项其实并没有什么影响,选择Widget还是mainwindows或则Dialog都是可以的。
第二步设计窗体
主体思想就是当我们点击完三个点点的小按钮的时候就可以访问电脑文件,选中文件时就可以查询到文件的信息,并且显示到窗口程序里。
第三步设计槽函数
利用按钮创建一个点击的槽函数
点击完以后就显示文件信息,必定需要另外的函数辅助。
点击时具体代码
void FileInfo::on_pushButton_clicked()
{
QString fileName=QFileDialog::getOpenFileName(this,"打开文件",
".","files(*)");
//getOPenFilename 他会返回一个选中文件的名字
ui->fileName_lineEdit->setText(fileName);
getFileInfo(fileName);
}
这里需要用到QFileDialog的getOpenFileName方法,它就会在我们选中文件的时候,将文件的名称返回。
利用这一点,我们可以创建一个辅助函数getFileInfo传进这个文件的名称,利用这个名称,继续查询文件的具体信息。
getFileInfo函数的代码
void FileInfo::getFileInfo(QString &fileName)
{
QFileInfo info(fileName);
qint64 size=info.size();//文件大小
QDateTime createTime=info.created();//获取文件创建时间
QDateTime lastMtime=info.lastModified();//文件最近修改时间
QDateTime lastRTime=info.lastRead();//文件最近访问时间
//文件的属性i信息
bool bIsDir=info.isDir();
bool bIsFile=info.isFile();
bool bIsSysmLink=info.isSymLink();
bool bIsHidden=info.isHidden();
bool bIsRead=info.isReadable();
bool bIsWrite=info.isWritable();
bool bIsExecute=info.isExecutable();
ui->fileSize_lineEdit->setText(QString::number(size));
ui->fileCreate_lineEdit->setText(createTime.toString());
ui->fileModify_lineEdit->setText(lastMtime.toString());
ui->fileRead_lineEdit->setText(lastRTime.toString());
ui->isDircheckBox->setChecked(bIsDir);
ui->isFilecheckBox->setChecked(bIsFile);
ui->isSysmcheckBox->setChecked(bIsSysmLink);
ui->isHiddencheckBox->setChecked(bIsHidden);
ui->isReadcheckBox->setChecked(bIsRead);
ui->isWritecheckBox->setChecked(bIsWrite);
ui->isExecutecheckBox->setChecked(bIsExecute);
}
完整代码:
头文件
#ifndef FILEINFO_H
#define FILEINFO_H
#include <QWidget>
namespace Ui {
class FileInfo;
}
class FileInfo : public QWidget
{
Q_OBJECT
public:
explicit FileInfo(QWidget *parent = 0);
~FileInfo();
void getFileInfo(QString &fileName);
private slots:
void on_pushButton_clicked();
private:
Ui::FileInfo *ui;
};
#endif // FILEINFO_H
cpp文件:
#include "fileinfo.h"
#include "ui_fileinfo.h"
#include<QFileInfo>
#include<QDateTime>
#include<QFileDialog>
FileInfo::FileInfo(QWidget *parent) :
QWidget(parent),
ui(new Ui::FileInfo)
{
ui->setupUi(this);
}
FileInfo::~FileInfo()
{
delete ui;
}
void FileInfo::getFileInfo(QString &fileName)
{
QFileInfo info(fileName);
qint64 size=info.size();//文件大小
QDateTime createTime=info.created();//获取文件创建时间
QDateTime lastMtime=info.lastModified();//文件最近修改时间
QDateTime lastRTime=info.lastRead();//文件最近访问时间
//文件的属性i信息
bool bIsDir=info.isDir();
bool bIsFile=info.isFile();
bool bIsSysmLink=info.isSymLink();
bool bIsHidden=info.isHidden();
bool bIsRead=info.isReadable();
bool bIsWrite=info.isWritable();
bool bIsExecute=info.isExecutable();
ui->fileSize_lineEdit->setText(QString::number(size));
ui->fileCreate_lineEdit->setText(createTime.toString());
ui->fileModify_lineEdit->setText(lastMtime.toString());
ui->fileRead_lineEdit->setText(lastRTime.toString());
ui->isDircheckBox->setChecked(bIsDir);
ui->isFilecheckBox->setChecked(bIsFile);
ui->isSysmcheckBox->setChecked(bIsSysmLink);
ui->isHiddencheckBox->setChecked(bIsHidden);
ui->isReadcheckBox->setChecked(bIsRead);
ui->isWritecheckBox->setChecked(bIsWrite);
ui->isExecutecheckBox->setChecked(bIsExecute);
}
void FileInfo::on_pushButton_clicked()
{
QString fileName=QFileDialog::getOpenFileName(this,"打开文件",
".","files(*)");
//getOPenFilename 他会返回一个选中文件的名字
ui->fileName_lineEdit->setText(fileName);
getFileInfo(fileName);
}