效果展示:
源码如下:
头文件(.h)
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QWidget> #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QCheckBox> #include <QHBoxLayout> #include <QVBoxLayout> #include <QGridLayout> #include <QFileDialog> #include <QDateTime> class MainWindow : public QWidget { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void onGetFile(); //打开文件 private: QLabel *m_pFileNameLabel; QLabel *m_pFileSizeLabel; QLabel *m_pFileCreateTimeLabel; QLabel *m_pFileLastModifiedTimeLabel; QLabel *m_pFileLastReadTimeLabel; QLineEdit *m_pFileNameEdit; QLineEdit *m_pFileSizeEdit; QLineEdit *m_pFileCreateTimeEdit; QLineEdit *m_pFileLastModifiedTimeEdit; QLineEdit *m_pFileLastReadTimeEdit; QPushButton *m_pFileButton; QLabel *m_pFilePropertyLabel; QCheckBox *m_pDirCheckBox; QCheckBox *m_pFileCheckBox; QCheckBox *m_pSymLinkCheckBox; QCheckBox *m_pHiddenCheckBox; QCheckBox *m_pReadableCheckBox; QCheckBox *m_pWriteableCheckBox; QCheckBox *m_pExecuteAbleCheckBox; }; #endif // MAINWINDOW_H
源文件(.cpp)
#include "main_window.h" MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { this->setWindowTitle("获取文件元数据的信息"); m_pFileNameLabel = new QLabel("文件名称:", this); m_pFileNameEdit = new QLineEdit(this); m_pFileButton = new QPushButton("选择文件...", this); connect(m_pFileButton, &QPushButton::clicked, this, &MainWindow::onGetFile); m_pFileSizeLabel = new QLabel("文件大小:", this); m_pFileSizeEdit = new QLineEdit(this); m_pFileCreateTimeLabel = new QLabel("创建时间:", this); m_pFileCreateTimeEdit = new QLineEdit(this); m_pFileLastModifiedTimeLabel = new QLabel("最后修改时间:", this); m_pFileLastModifiedTimeEdit = new QLineEdit(this); m_pFileLastReadTimeLabel = new QLabel("最后访问时间:", this); m_pFileLastReadTimeEdit = new QLineEdit(this); m_pFilePropertyLabel = new QLabel("属性:", this); m_pDirCheckBox = new QCheckBox("目录", this); m_pFileCheckBox = new QCheckBox("文件", this); m_pSymLinkCheckBox = new QCheckBox("符号链接", this); m_pHiddenCheckBox = new QCheckBox("隐藏", this); m_pReadableCheckBox = new QCheckBox("读", this); m_pWriteableCheckBox = new QCheckBox("写", this); m_pExecuteAbleCheckBox = new QCheckBox("执行", this); QGridLayout *pGlayout = new QGridLayout(this); pGlayout->addWidget(m_pFileNameLabel, 0, 0); pGlayout->addWidget(m_pFileNameEdit, 0, 1); pGlayout->addWidget(m_pFileButton, 0 ,2); pGlayout->addWidget(m_pFileSizeLabel, 1,0); pGlayout->addWidget(m_pFileSizeEdit, 1, 1, 1, 2); pGlayout->addWidget(m_pFileCreateTimeLabel, 2, 0); pGlayout->addWidget(m_pFileCreateTimeEdit, 2, 1, 1, 2); pGlayout->addWidget(m_pFileLastModifiedTimeLabel, 3, 0); pGlayout->addWidget(m_pFileLastModifiedTimeEdit, 3, 1, 1, 2); pGlayout->addWidget(m_pFileLastReadTimeLabel, 4, 0); pGlayout->addWidget(m_pFileLastReadTimeEdit, 4, 1, 1, 2); pGlayout->addWidget(m_pFilePropertyLabel, 5, 0, 1, 3); QHBoxLayout *pHlayout = new QHBoxLayout(this); pHlayout->addWidget(m_pDirCheckBox); pHlayout->addWidget(m_pFileCheckBox); pHlayout->addWidget(m_pSymLinkCheckBox); pHlayout->addWidget(m_pHiddenCheckBox); pHlayout->addWidget(m_pReadableCheckBox); pHlayout->addWidget(m_pWriteableCheckBox); pHlayout->addWidget(m_pExecuteAbleCheckBox); pGlayout->addLayout(pHlayout, 6, 0, 1, 3); } MainWindow::~MainWindow() { } void MainWindow::onGetFile() { QString strFileName = QFileDialog::getOpenFileName(this, "选择文件", QDir::homePath(), "files(*)"); m_pFileNameEdit->setText(strFileName); QFileInfo fileInfo(strFileName); //文件大小 qint64 fileSize = fileInfo.size(); m_pFileSizeEdit->setText(QString::number(fileSize)); //文件创建时间 QDateTime createdTime = fileInfo.birthTime(); m_pFileCreateTimeEdit->setText(createdTime.toString("yyyy-MM-dd hh:mm:ss")); //文件最后修改时间 QDateTime lastModifiedTime = fileInfo.lastModified(); m_pFileLastModifiedTimeEdit->setText(lastModifiedTime.toString("yyyy-MM-dd hh:mm:ss")); //文件最后访问时间 QDateTime lastAccessedTime = fileInfo.lastRead(); m_pFileLastReadTimeEdit->setText(lastAccessedTime.toString("yyyy-MM-dd hh:mm:ss")); if (fileInfo.isDir()) { m_pDirCheckBox->setChecked(true); } if (fileInfo.isFile()) { m_pFileCheckBox->setChecked(true); } if (fileInfo.isSymLink()) { m_pSymLinkCheckBox->setChecked(true); } if (fileInfo.isHidden()) { m_pHiddenCheckBox->setChecked(true); } QFile file(strFileName); if (file.exists()) { if (file.permissions() & QFile::ReadUser) { m_pReadableCheckBox->setChecked(true); } if (file.permissions() & QFile::WriteUser) { m_pWriteableCheckBox->setChecked(true); } if (file.permissions() & QFile::ExeUser) { m_pExecuteAbleCheckBox->setChecked(true); } } }