Qt學習之路之獲取檔案資訊
阿新 • • 發佈:2019-02-06
QFileInfo類提供了對檔案進行操作時獲取的檔案資訊,包括檔名, 檔案大小(位元組), 檔案建立時間,
檔案最後修改時間,檔案最近訪問時間以及一些檔案是否為目錄,檔案,或者符號連線,和讀寫等屬性。
不廢話了,先看看程式碼~~~~
fileInfo_widget.h
fileInfo_widget.cpp#ifndef FILEWIDGET_H #define FILEWIDGET_H #include <QWidget> #include <QLabel> #include <QTextCodec> //---j解決中文亂碼 #include <QPushButton> #include <QCheckBox> #include <QLineEdit> #include <QHBoxLayout> #include <QVBoxLayout> #include <QFileDialog> #include <QGridLayout> #include <QDateTime> class FileInfoWidget : public QWidget { Q_OBJECT public: FileInfoWidget(QWidget *parent=0); public slots: void slotFile(); //-----通過標準檔案對話方塊獲取檔名功能 void slotGetInfo(); //-----獲取檔案的具體資訊 private: QLabel *fileNameLabel; QLineEdit *fileNameEdit; QPushButton *openFileBtn; QPushButton *GetFileInfoBtn; QLabel *sizeLabel; //---大小 QLineEdit *sizeLabelEdit; QLabel *buildTimeLabel; //--建立時間 QLineEdit *buildTimeEdit; QLabel *lastModifiedTimeLabel; //---最近修改時間 QLineEdit *lastModifiedEdit; QLabel *lastVisitLabel; //--最後訪問時間 QLineEdit *lastVisitEidt; QLabel *propertyLabel; //--屬性 QCheckBox *isDirCheckBox; //--目錄 QCheckBox *isFileCheckBox; //--檔案 QCheckBox *isSymbolLinkCheckBox; //--符號連線 QCheckBox *isHiddenCheckBox; //--隱藏 QCheckBox *isReadableCheckBox; //--讀 QCheckBox *isWriteableCheckBox; //--寫 QCheckBox *isExecutableCheckBox; //-執行 }; #endif //FILEWIDGET_H
main.cpp#include "fileInfo_widget.h" FileInfoWidget::FileInfoWidget(QWidget *parent/*=0*/):QWidget(parent) { //----Qt5解決中文亂碼 QTextCodec *codec = QTextCodec::codecForName("GB18030"); //----------------------------------- fileNameLabel = new QLabel(codec->toUnicode("檔名")); fileNameEdit = new QLineEdit(); openFileBtn = new QPushButton(codec->toUnicode("檔案")); sizeLabel = new QLabel(codec->toUnicode("大小")); sizeLabelEdit = new QLineEdit(); buildTimeLabel = new QLabel(codec->toUnicode("建立時間")); buildTimeEdit = new QLineEdit(); lastModifiedTimeLabel = new QLabel(codec->toUnicode("最後修改時間")); lastModifiedEdit = new QLineEdit(); lastVisitLabel = new QLabel(codec->toUnicode("最近訪問時間")); lastVisitEidt = new QLineEdit(); propertyLabel = new QLabel(codec->toUnicode("屬性")); isDirCheckBox = new QCheckBox(codec->toUnicode("目錄")); isFileCheckBox = new QCheckBox(codec->toUnicode("檔案")); isSymbolLinkCheckBox = new QCheckBox(codec->toUnicode("符號連線")); isHiddenCheckBox = new QCheckBox(codec->toUnicode("隱藏")); isReadableCheckBox = new QCheckBox(codec->toUnicode("讀")); isWriteableCheckBox = new QCheckBox(codec->toUnicode("寫")); isExecutableCheckBox = new QCheckBox(codec->toUnicode("執行")); GetFileInfoBtn = new QPushButton(codec->toUnicode("獲取檔案資訊")); //------佈局控制元件 QGridLayout *gridLayout = new QGridLayout(); gridLayout->addWidget(fileNameLabel, 0, 0); gridLayout->addWidget(fileNameEdit, 0, 1); gridLayout->addWidget(openFileBtn, 0, 2); gridLayout->addWidget(sizeLabel, 1, 0); gridLayout->addWidget(sizeLabelEdit, 1, 1, 1, 2); gridLayout->addWidget(buildTimeLabel, 2, 0); gridLayout->addWidget(buildTimeEdit, 2, 1, 1, 2); gridLayout->addWidget(lastVisitLabel, 3, 0); gridLayout->addWidget(lastVisitEidt, 3, 1, 1, 2); gridLayout->addWidget(lastVisitLabel, 4, 0); gridLayout->addWidget(lastVisitEidt, 4, 1, 1, 2); QHBoxLayout *hLayout1 = new QHBoxLayout(); hLayout1->addWidget(propertyLabel); hLayout1->addStretch(); QHBoxLayout *hLayout2 = new QHBoxLayout(); hLayout2->addWidget(isDirCheckBox); hLayout2->addWidget(isFileCheckBox); hLayout2->addWidget(isHiddenCheckBox); hLayout2->addWidget(isSymbolLinkCheckBox); hLayout2->addWidget(isReadableCheckBox); hLayout2->addWidget(isWriteableCheckBox); hLayout2->addWidget(isExecutableCheckBox); QHBoxLayout *hLayout3 = new QHBoxLayout(); hLayout3->addWidget(GetFileInfoBtn); QVBoxLayout *vLayout = new QVBoxLayout(this); vLayout->addLayout(gridLayout); vLayout->addLayout(hLayout1); vLayout->addLayout(hLayout2); vLayout->addLayout(hLayout3); //---顯示佈局 setLayout(vLayout); //-----設定訊號與槽 connect(openFileBtn, SIGNAL(clicked()), this, SLOT(slotFile())); connect(GetFileInfoBtn, SIGNAL(clicked()), this, SLOT(slotGetInfo())); //----設定視窗屬性 setWindowTitle(codec->toUnicode("檔案資訊")); } //-----通過標準檔案對話方塊獲取檔名功能 void FileInfoWidget::slotFile() { //----Qt5解決中文亂碼 QTextCodec *codec = QTextCodec::codecForName("GB18030"); QString fileNameStr = QFileDialog :: getOpenFileName (this); fileNameEdit->setText(fileNameStr); } //-----獲取檔案的具體資訊 void FileInfoWidget::slotGetInfo() { //----Qt5解決中文亂碼 QTextCodec *codec = QTextCodec::codecForName("GB18030"); //---獲取檔名 QString fileStr = fileNameEdit->text(); QFileInfo fileInfo(fileStr); //---獲取檔案大小(位元組) qint64 size = fileInfo.size(); //--獲取檔案建立時間 QDateTime buildTime = fileInfo.created(); //--獲取檔案最近修改時間 QDateTime lastMdTime = fileInfo.lastModified(); //---獲取檔案最近訪問時間 QDateTime lastVisitTime = fileInfo.lastRead(); //--獲取檔案相關屬性 bool isDir = fileInfo.isDir(); bool isFile = fileInfo.isFile(); bool isSymLink = fileInfo.isSymLink(); bool isHide = fileInfo.isHidden(); bool isRead = fileInfo.isReadable(); bool isWrite = fileInfo.isWritable(); bool isExecu = fileInfo.isExecutable(); //--顯示屬性 sizeLabelEdit->setText(QString :: number(size) + codec->toUnicode(" 位元組")); buildTimeEdit->setText(buildTime.toString()); lastModifiedEdit->setText(lastMdTime.toString()); lastVisitEidt->setText(lastVisitTime.toString()); isDirCheckBox->setCheckState(isDir ? Qt::Checked : Qt :: Unchecked); isFileCheckBox->setCheckState(isFile ? Qt::Checked : Qt :: Unchecked); isSymbolLinkCheckBox->setCheckState(isSymLink ? Qt::Checked : Qt :: Unchecked); isHiddenCheckBox->setCheckState(isHide ? Qt::Checked : Qt :: Unchecked); isReadableCheckBox->setCheckState(isRead ? Qt::Checked : Qt :: Unchecked); isWriteableCheckBox->setCheckState(isWrite ? Qt::Checked : Qt :: Unchecked); isExecutableCheckBox->setCheckState(isExecu ? Qt::Checked : Qt :: Unchecked); } </span></strong>
#pragma once
#include <QtWidgets/QApplication>
#include "fileInfo_widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
FileInfoWidget win;
win.show();
return a.exec();
}
執行結果:
更多關於QFileInfo類的使用,請參考assistant。