【Qt5开发及实例】27、获得文件的信息

fileinfo.h

/**
* 书本:【Qt5开发及实例】
* 功能:获得文件的信息
* 文件:fileinfo.h
* 时间:2015年2月4日17:23:38
* 作者:cutter_point
*/

#ifndef FILEINFO_H
#define FILEINFO_H

#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#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:
  //一共是6个label 5个lineEdit 2个pushbutton 7个checkbox
  //第一行
  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;

};

#endif // FILEINFO_H

fileinfo.cpp

/**
* 书本:【Qt5开发及实例】
* 功能:获得文件的信息
* 文件:fileinfo.h
* 时间:2015年2月4日17:23:38
* 作者:cutter_point
*/

#include "fileinfo.h"

#include <QGridLayout>
#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;
  //fileNameLabel = new QLabel(tr("文件名:"));
  gridLayout->addWidget(fileNameLabel, 0, 0);
  gridLayout->addWidget(fileNameLineEdit, 0, 1);
  gridLayout->addWidget(fileBtn, 0, 2);

  //sizeLabel = new QLabel(tr("大小:"));
  gridLayout->addWidget(sizeLabel, 1, 0);
  gridLayout->addWidget(sizeLineEdit, 1, 1, 1, 2);

  //createTimeLabel = new QLabel(tr("创建时间:"));
  gridLayout->addWidget(createTimeLabel, 2, 0);
  gridLayout->addWidget(createTimeLineEdit, 2, 1, 1, 2);

  // lastModifiedLabel = new QLabel(tr("最后修改时间:"));
  gridLayout->addWidget(lastModifiedLabel,3,0);
  gridLayout->addWidget(lastModifiedLineEdit,3,1,1,2);

  // lastReadLabel = new QLabel(tr("最后访问时间:"));
  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()));

}

//按钮文件响应的事件槽函数
//void slotFile();
void fileinfo::slotFile()
{
  //打开文件的对话框
  QString fileName = QFileDialog::getOpenFileName(this, " 打开 ", "/", "files(*)");
  fileNameLineEdit->setText(fileName);

}

//按钮获得文件信息槽函数
//void slotGet();
void fileinfo::slotGet()
{
  QString file = fileNameLineEdit->text();    //获取文件路径
  QFileInfo info(file);

  qint64 size = info.size();

    QDateTime created = info.created();   //文件创建时间
    QDateTime lastModified = info.lastModified(); //文件最后一次修改的时间
    QDateTime lastRead = info.lastRead();   //文件最后一次访问时间

    bool isDir = info.isDir();    //这个是目录
    bool isFile = info.isFile();    //是文件
    bool isSymLink = info.isSymLink();    //符号连接
    bool isHidden = info.isHidden();    //隐藏文件
    bool isReadable = info.isReadable();    //可读文件
    bool isWritable = info.isWritable();    //可写文件
    bool isExecutable = info.isExecutable();    //可执行文件

    sizeLineEdit->setText(QString::number(size));   //文件大小
    createTimeLineEdit->setText(created.toString());    //创建时间
    lastModifiedLineEdit->setText(lastModified.toString());   //最后一次修改的时间
    lastReadLineEdit->setText(lastRead.toString());   //最后一次访问时间

//    isDirCheckBox->setCheckState(isDir ? Qt::Checked : Qt::Unchecked);
    //是否选择,这个多选框
    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);
}

fileinfo::~fileinfo()
{

}

运行结果

时间: 2024-12-28 12:58:55

【Qt5开发及实例】27、获得文件的信息的相关文章

【Qt5开发及实例】22、文件浏览器

文件浏览器 今天有点痿了,昨天晚上2点左右睡的,怪我太痴迷编程???? NO!NO!NO!  看网络小说到2点,= =.我也是醉了,不知道为什么昨天晚上就是睡不着,然后就掏出手机看起了小说,结果是TMD居然看到了精彩片段,呵呵,等我回过神来已经2点了,坑.... 今天就做了个简单的小程序,然后就看看书,也没怎么敲代码,我觉得还是蛮好的,有时候不能往死里敲代码,还是要休息一下,看看其他的,思考一下下一步怎么走. 恩!就是这样,好吧,前面的这些才是今天的主要收获!! 文件浏览模型 /** * 书本:

【Qt5开发及实例】26、得到文件的大小和目录的路径

说实话,我是为了混个持之以恒的标签的 = =,谁叫我过年都没怎么写呢!!!! /** * 书本:[Qt5开发及实例] * 功能:得到文件的大小和目录的路径 * 文件:main.cpp * 时间:2015年2月3日21:18:16 * 作者:cutter_point */ #include <QCoreApplication> #include <QStringList> #include <QDir> #include <QtDebug> //根据给的路径得

【Qt5开发及实例】10、关于进度条的显示

平常我们下载东西总会有一个显示下载了多少的进度条,我们今天来实现一下. 这里有两种显示方式 可以选择,第一个是用了 QProgressBar控件,第二个是用了QProgressDialog控件 progressdlg.h /** * 书本:[Qt5开发及实例] * 功能:为了实现进度条的显示 * 文件:progressdlg.h * 时间:2015年1月2日15:27:10 * 作者:cutter_point */ #ifndef PROGRESSDLG_H #define PROGRESSDL

【Qt5开发及实例】24、数据柱形图显示

数据柱形图显示 1.我们首先把这个这个视图的表格部分表示出来 mainwindow.h /** * 书本:[Qt5开发及实例] * 功能:数据柱形图显示,这个类是表格显示 * 文件:mainwindow.h * 时间:2015年1月28日18:50:54 * 作者:cutter_point */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QStandardItemModel>

【Qt5开发及实例】25、实现代理的功能

实现代理的功能 在Qt里面也有MVC,那就是视图,模型,代理,后面我们再开一章,好好来学习一下Qt的MVC吧! main.cpp /** * 书本:[Qt5开发及实例] * 功能:实现代理的功能 * 文件:main.cpp * 时间:2015年1月29日20:53:04 * 作者:cutter_point */ #include <QApplication> #include <QStandardItemModel> #include <QTableView> //#i

【Qt5开发及实例】18、图形修饰小工具

图形修饰小工具 无力吐槽,这是我第三遍写这个了,到底是个什么意思???我只要一贴代码,浏览器直接崩溃,呵呵了,我也是,我现在只要写完一段字我就保存,尼玛在掉我就不写了,写到word里面,再贴上来. 效果 左边图形展示界面 paintarea.h /** * 书本:[Qt5开发及实例] * 功能:实现绘画各种图形 * 文件:paintarea.h * 时间:2015年1月21日16:59:25 * 作者:cutter_point */ #ifndef PAINTAREA_H #define PAI

Qt5主窗体程序: 文本编辑器的实现(Qt5开发及实例)

下面的程序出自<Qt5开发及实例>陆文周. 效果图: 程序是一个文本编辑器的实例,主界面如下: 程序中的源文件和头文件: 源代码: 文件main.cpp的源代码: #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); QFont font("楷体",15); a.setFont

【Qt5开发及实例】28、获取本机网络信息

networkinformation.h /** * 书本:[Qt5开发及实例] * 功能:获取本机网络信息 * 文件:networkinformation.h * 时间:2015年2月5日14:51:33 * 作者:cutter_point */ #ifndef NETWORKINFORMATION_H #define NETWORKINFORMATION_H #include <QWidget> #include <QLabel> #include <QLineEdit&

【Qt5开发及实例】29、实现服务器端的编程,UDP协议

udpserver.h /** * 书本:[Qt5开发及实例] * 功能:实现服务器端的编程 * 文件:udpserver.h * 时间:2015年2月5日21:05:21 * 作者:cutter_point */ #ifndef UDPSERVER_H #define UDPSERVER_H #include <QDialog> #include <QLabel> #include <QLineEdit> #include <QPushButton> #i