7、QFileDialog类文件对话框

发布时间 2023-12-07 15:41:59作者: 秃头的C#

QFileDialog类(文件对话框)

 

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout> //水平布局
#include <QVBoxLayout> //垂直布局

#include <QFileDialog>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    QLabel *FileNameLabel;
    QLineEdit *FileNameLineEdit;

    QPushButton *FileButton;

    QLabel *FileSizeLabel;
    QLineEdit *FileSizeLineEdit;

    QPushButton *GetFileInfoButton;

private slots:
    void GetFileInfoFunc(); //用于打开文件
    void GetFileSizeFunc(); //用于获取文件的大小
};

#endif // DIALOG_H

 

#include "dialog.h"
#include "QDebug"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("QFileDialog类(文件对话框测试)");


    //创建对应的控件
    FileNameLabel =new QLabel("文件名称:");
    FileNameLineEdit = new QLineEdit;
    FileButton=new QPushButton("选择...");

    FileSizeLabel=new QLabel("文件大小:");
    FileSizeLineEdit=new QLineEdit;

    GetFileInfoButton = new QPushButton("获取文件大小信息");


    //排列布局
    QGridLayout *glayout=new QGridLayout;
    glayout->addWidget(FileNameLabel,0,0);
    glayout->addWidget(FileNameLineEdit,0,1);
    glayout->addWidget(FileButton,0,2);
    glayout->addWidget(FileSizeLabel,1,0);
    glayout->addWidget(FileSizeLineEdit,1,1,1,2);
    glayout->addWidget(GetFileInfoButton,2,0,1,3);

    //    QHBoxLayout *hlayout =new QHBoxLayout;
    //    hlayout->addWidget(GetFileInfoButton);

    QVBoxLayout *vlayout=new QVBoxLayout(this);
    vlayout->addLayout(glayout);
    //    vlayout->addLayout(hlayout);

    connect(FileButton,SIGNAL(clicked()),this,SLOT(GetFileInfoFunc()));
    connect(GetFileInfoButton,SIGNAL(clicked()),this,SLOT(GetFileSizeFunc()));
}

Dialog::~Dialog()
{

}

void Dialog::GetFileInfoFunc() //用于打开文件
{
    QString strFileName=QFileDialog::getOpenFileName(this,"打开","/","File(*)");
    qDebug() << strFileName;
    FileNameLineEdit->setText(strFileName);
}

void Dialog::GetFileSizeFunc() //用于获取文件大小
{
    // 获取单行编辑框控件里的路径
    QString strFileName=FileNameLineEdit->text();

    QFileInfo fileinfo(strFileName);
    qint64 fileSize=fileinfo.size();
    FileSizeLineEdit->setText(QString::number(fileSize));
}