> 文章列表 > Qt——实现一个简单的获取文件信息的dialog

Qt——实现一个简单的获取文件信息的dialog

Qt——实现一个简单的获取文件信息的dialog

实现效果

选择文件

Qt——实现一个简单的获取文件信息的dialog
Qt——实现一个简单的获取文件信息的dialog

获取文件信息:

Qt——实现一个简单的获取文件信息的dialog
Qt——实现一个简单的获取文件信息的dialog

实现

1.创建项目

新建一个项目,随便起一个项目名FileInfo,让FileInfo继承自 QDialog类。

2.项目布局

Qt——实现一个简单的获取文件信息的dialog

  • topLayout使用的是 网格布局(QGridLayout),把 属性 标签以上的所有控件都放入其布局中
  • centerLayout使用的是 水平布局 (·QHBoxLayout),把几个多选框放入其布局中
  • mainLayout使用的是 垂直布局 (QVBoxLayout),把 topLayoutcenterLayout以及 最后一个获取文件信息的按钮放入到其布局中

3.代码

fileinfo.h

#ifndef FILEINFO_H
#define FILEINFO_H#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QCheckBox>class FileInfo : public QDialog
{Q_OBJECTpublic:FileInfo(QWidget *parent = nullptr);~FileInfo();public slots:void slotFile();void slotGet();private:QLabel * fileLabel;QLineEdit * fileLineEdit;QPushButton * fileBtn;QLabel * sizeLabel;QLineEdit * sizeLineEdit;QLabel * createdTimeLabel;QLineEdit * createdTimeLineEdit;QLabel * lastModifiedLabel;QLineEdit * lastModifiedLineEdit;QLabel * lastVisitLabel;QLineEdit * lastVisitLineEdit;QLabel * propertyLabel;QCheckBox * isDirCheckBox;QCheckBox * isFileCheckBox;QCheckBox * isSymbolLinkCheckBox;QCheckBox * isHiddenCheckBox;QCheckBox * isReadCheckBox;QCheckBox * isWritaleCheckBox;QCheckBox * isExecutableCheckBox;QPushButton * getBtn;
};
#endif // FILEINFO_H

fileinfo.cpp:

#include "fileinfo.h"
#include <QGridLayout>
#include <QFileDialog>
#include <QDateTime>FileInfo::FileInfo(QWidget *parent): QDialog(parent)
{fileLabel = new QLabel(tr("文件名:"));fileLineEdit = new QLineEdit;fileBtn = new QPushButton(tr("文件"));sizeLabel = new QLabel(tr("大小:"));sizeLineEdit = new QLineEdit;createdTimeLabel = new QLabel(tr("创建时间:"));createdTimeLineEdit = new QLineEdit;lastModifiedLabel = new QLabel(tr("最后修改时间:"));lastModifiedLineEdit = new QLineEdit;lastVisitLabel = new QLabel(tr("最后访问时间:"));lastVisitLineEdit = new QLineEdit;propertyLabel = new QLabel(tr("属性:"));isDirCheckBox = new QCheckBox(tr("目录"));isFileCheckBox = new QCheckBox(tr("文件"));isSymbolLinkCheckBox = new QCheckBox(tr("符号链接"));isHiddenCheckBox = new QCheckBox(tr("隐藏"));isReadCheckBox = new QCheckBox(tr("读"));isWritaleCheckBox = new QCheckBox(tr("写"));isExecutableCheckBox = new QCheckBox(tr("执行"));getBtn = new QPushButton(tr("获取文件信息"));//topQGridLayout * topLayout = new QGridLayout;topLayout->addWidget(fileLabel,0,0);topLayout->addWidget(fileLineEdit,0,1);topLayout->addWidget(fileBtn,0,2);topLayout->addWidget(sizeLabel,1,0);topLayout->addWidget(sizeLineEdit,1,1);topLayout->addWidget(createdTimeLabel,2,0);topLayout->addWidget(createdTimeLineEdit,2,1);topLayout->addWidget(lastModifiedLabel,3,0);topLayout->addWidget(lastModifiedLineEdit,3,1);topLayout->addWidget(lastVisitLabel,4,0);topLayout->addWidget(lastVisitLineEdit,4,1);topLayout->addWidget(propertyLabel,5,0);//centerQHBoxLayout * centerLayout = new QHBoxLayout;centerLayout->addWidget(isDirCheckBox);centerLayout->addWidget(isFileCheckBox);centerLayout->addWidget(isSymbolLinkCheckBox);centerLayout->addWidget(isHiddenCheckBox);centerLayout->addWidget(isReadCheckBox);centerLayout->addWidget(isWritaleCheckBox);centerLayout->addWidget(isExecutableCheckBox);//mainQVBoxLayout * mainLayout = new QVBoxLayout(this);mainLayout->addLayout(topLayout);mainLayout->addLayout(centerLayout);mainLayout->addWidget(getBtn);connect(fileBtn,SIGNAL(clicked()),this,SLOT(slotFile()));connect(getBtn,SIGNAL(clicked()),this,SLOT(slotGet()));}//获取文件名
void FileInfo::slotFile(){QString fileName = QFileDialog::getOpenFileName(this,tr("打 开"),"/","files (*)");fileLineEdit->setText(fileName);
}//通过QFileInfo 获取文件信息
void FileInfo::slotGet(){QString fileName = fileLineEdit->text();QFileInfo info(fileName);qint64 size = info.size();QDateTime createdTime = info.created();QDateTime lastModified = info.lastModified();QDateTime lastVisit = info.lastRead();bool isDir = info.isDir();bool isFile = info.isFile();bool isSymbolLink = info.isSymLink();bool isHidden = info.isHidden();bool isReadable = info.isReadable();bool isWritable = info.isWritable();bool isExecutable = info.isExecutable();sizeLineEdit->setText(QString::number(size));createdTimeLineEdit->setText(createdTime.toString());lastModifiedLineEdit->setText(lastModified.toString());lastVisitLineEdit->setText(lastVisit.toString());isDirCheckBox->setCheckState(isDir ? Qt::Checked : Qt::Unchecked);isFileCheckBox->setCheckState(isFile ? Qt::Checked : Qt::Unchecked);isSymbolLinkCheckBox->setCheckState(isSymbolLink ? Qt::Checked : Qt::Unchecked);isHiddenCheckBox->setCheckState(isHidden ? Qt::Checked : Qt::Unchecked);isReadCheckBox->setCheckState(isReadable ? Qt::Checked : Qt::Unchecked);isWritaleCheckBox->setCheckState(isWritable ? Qt::Checked : Qt::Unchecked);isExecutableCheckBox->setCheckState(isExecutable ? Qt::Checked : Qt::Unchecked);
}FileInfo::~FileInfo()
{
}

main.cpp:


#include "fileinfo.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);FileInfo w;w.show();return a.exec();
}