Qt开发之获取文件元数据的信息
效果展示:
源码如下:
头文件(.h)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | #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 ); } } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?