QT 获取文件属性

来源:互联网 发布:sonyz4tablet知乎 编辑:程序博客网 时间:2024/06/08 16:41

参考教材实例,增加了注释和新功能,方便大家交流学习

 //fileinformation.cpp

include "fileinformation.h"

#

FileInformation::FileInformation( QWidget *parent, Qt::WindowFlags  f )
    : QDialog( parent, f )
{  
    setWindowTitle(tr("File Information"));
       
    LabelFileName = new QLabel();
    LabelFileName->setText(tr("File Name:"));
    LineEditFileName = new QLineEdit();   
    PushButtonFile = new QPushButton( this);
    PushButtonFile->setText( tr( "File" ) );
    LabelSize = new QLabel();
    LabelSize->setText(tr("Size:"));
    LineEditSize = new QLineEdit();  
    LabelCreated = new QLabel();
    LabelCreated->setText(tr("Created:"));
    LineEditCreated = new QLineEdit();
    
    LabelLastModified = new QLabel();
    LabelLastModified->setText(tr("Last Modified:"));
    LineEditLastModified = new QLineEdit();
    
    LabelLastRead = new QLabel();
    LabelLastRead->setText(tr("Last Read:"));
    LineEditLastRead = new QLineEdit();        
    LabelProperty = new QLabel();
    LabelProperty->setText(tr("Property:"));
    CheckBoxIsDir = new QCheckBox();
    CheckBoxIsDir->setText(tr("Dir"));
    CheckBoxIsFile = new QCheckBox();
    CheckBoxIsFile->setText(tr("File"));
    CheckBoxIsSymLink = new QCheckBox();
    CheckBoxIsSymLink->setText(tr("SymLink"));
    CheckBoxIsHidden = new QCheckBox();
    CheckBoxIsHidden->setText(tr("Hidden"));
    CheckBoxIsReadable = new QCheckBox();
    CheckBoxIsReadable->setText(tr("Readable"));
    CheckBoxIsWritable = new QCheckBox();
    CheckBoxIsWritable->setText(tr("Writable"));
    CheckBoxIsExecutable = new QCheckBox();
    CheckBoxIsExecutable->setText(tr("Executable"));
    PushButtonGet = new QPushButton( this);
    PushButtonGet->setText( tr("Get" ));
    
    QHBoxLayout *hbLayout1 = new QHBoxLayout ();
    hbLayout1->addWidget(LabelFileName);
    hbLayout1->addWidget(LineEditFileName);
    hbLayout1->addWidget(PushButtonFile);
    
    QHBoxLayout *hbLayout2 = new QHBoxLayout ();
    hbLayout2->addWidget(LabelSize);
    hbLayout2->addWidget(LineEditSize);
    QHBoxLayout *hbLayout3 = new QHBoxLayout();
    hbLayout3->addWidget(LabelCreated);
    hbLayout3->addWidget(LineEditCreated);
    
    QHBoxLayout *hbLayout4 = new QHBoxLayout();
    hbLayout4->addWidget(LabelLastModified);
    hbLayout4->addWidget(LineEditLastModified);
    
    QHBoxLayout *hbLayout5 = new QHBoxLayout();
    hbLayout5->addWidget(LabelLastRead);
    hbLayout5->addWidget(LineEditLastRead);
    
    QHBoxLayout *hbLayout6 = new QHBoxLayout();
    hbLayout6->addWidget(LabelProperty);
    hbLayout6->addStretch();            
    QHBoxLayout *hbLayout7 = new QHBoxLayout();
    hbLayout7->addWidget(CheckBoxIsDir);
    hbLayout7->addWidget(CheckBoxIsFile);
    hbLayout7->addWidget(CheckBoxIsSymLink);
    hbLayout7->addWidget(CheckBoxIsHidden);
    hbLayout7->addWidget(CheckBoxIsReadable);
    hbLayout7->addWidget(CheckBoxIsWritable);
    hbLayout7->addWidget(CheckBoxIsExecutable);
      
    QVBoxLayout *vbLayout = new QVBoxLayout( this );
    vbLayout->addLayout( hbLayout1 );
    vbLayout->addLayout( hbLayout2 );
    vbLayout->addLayout( hbLayout3 );
    vbLayout->addLayout( hbLayout4 );
    vbLayout->addLayout( hbLayout5 );
    vbLayout->addLayout( hbLayout6 );
    vbLayout->addLayout( hbLayout7 );
    vbLayout->addWidget( PushButtonGet );
    connect(PushButtonFile,SIGNAL(clicked()),this,SLOT(slotFile()));
    connect(PushButtonGet,SIGNAL(clicked()),this,SLOT(slotGet()));
}
FileInformation::~FileInformation()
{
}
void FileInformation::slotFile()
{
    QString s = QFileDialog::getOpenFileName(   //获取文件路径
this, "open file dialog",
        "/",
        "files (*)");            
                                    
    LineEditFileName->setText( s.toAscii().data());//文件路径
}
void FileInformation::slotGet()
{
    QFileInfo info(LineEditFileName->text());
    //获取文件大小
    //在不同的平台上,基本的C++类型如short,char,int,long,long long会有不同的字长。
    //最好把它们转换为qint8,quint8,qint16,quint16,qint32,
    //quint32,qint64,quint64,这些类型能确保字长是不随平台改变的。
    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();
    LineEditSize->setText (QString::number(size));
    //显示文件时间信息
    LineEditCreated->setText (created.toString());
    LineEditLastModified->setText (lastModified.toString());
    LineEditLastRead->setText (lastRead.toString());
    //显示文件属性
    CheckBoxIsDir->setCheckState (isDir?Qt::Checked:Qt::Unchecked);
    CheckBoxIsFile->setCheckState (isFile?Qt::Checked:Qt::Unchecked);
    CheckBoxIsSymLink->setCheckState (isSymLink?Qt::Checked:Qt::Unchecked);
    CheckBoxIsHidden->setCheckState (isHidden?Qt::Checked:Qt::Unchecked);
    CheckBoxIsReadable->setCheckState (isReadable?Qt::Checked:Qt::Unchecked);
    CheckBoxIsWritable->setCheckState (isWritable?Qt::Checked:Qt::Unchecked);
    CheckBoxIsExecutable->setCheckState (isExecutable?Qt::Checked:Qt::Unchecked);
}

----------------------------------------------------------------------------------------------

 

//fileinformation.h

 

#ifndef FILEINFORMATION_H

#define FILEINFORMATION_H
#include <QtGui>
class FileInformation : public QDialog
{
    Q_OBJECT
public:
    FileInformation( QWidget *parent=0, Qt::WindowFlags  f=0 );
    ~FileInformation();
public:
QLabel* LabelFileName;
QLineEdit* LineEditFileName;
QPushButton* PushButtonFile;
QLabel* LabelSize;
QLineEdit* LineEditSize;
QLabel* LabelCreated;
QLineEdit* LineEditCreated;
QLabel* LabelLastModified ;
QLineEdit* LineEditLastModified;
QLabel* LabelLastRead ;
QLineEdit* LineEditLastRead;
QLabel* LabelProperty ;
QCheckBox* CheckBoxIsDir;
QCheckBox* CheckBoxIsFile;
QCheckBox* CheckBoxIsSymLink;
QCheckBox* CheckBoxIsHidden;
QCheckBox* CheckBoxIsReadable;
QCheckBox* CheckBoxIsWritable;
QCheckBox* CheckBoxIsExecutable;
        QPushButton* PushButtonGet;
public slots:
void slotFile();
        void slotGet();
};
#endif
----------------------------------------------------------------------------------------------
//main.cpp

#include "fileinformation.h"

#include <QApplication>
int main( int argc, char **argv )
{
    QFont font("ZYSong18030",12);
    QApplication::setFont(font);
    
    QApplication a( argc, argv ); 
    
    FileInformation fileinformation;
    fileinformation.show();
    return a.exec();
}
----------------------------------------------------------------------------------------------

//fileinformation.pro

 

TEMPLATE= app

TARGET= fileinformation
HEADERS= fileinformation.h
SOURCES= fileinformation.cpp /
  main.cpp

----------------------------------------------------------------------------------------------

原创粉丝点击