QT QFileDialog 类

QFileDialog 类

QFileDialog 是 Qt 库中的一个类,用于提供文件选择对话框,
允许用户选择文件或目录。QFileDialog 提供了多种静态方法和实例方法,
用于创建和配置文件对话框,并获取用户选择的文件或目录。

QObject
  └── QWidget
      └── QDialog
          └── QFileDialog
QObject:所有 Qt 对象的基类,提供对象树管理、信号和槽机制、事件处理等核心功能。
QWidget:所有用户界面组件的基类,提供基本的窗口功能。
QDialog:用于创建对话框窗口,通常用于与用户进行交互。
QFileDialog:用于提供文件选择对话框,允许用户选择文件或目录。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QBoxLayout>
#include <QFileDialog>
#include <QLineEdit>
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    QLabel * FileNameLabel;
    QLineEdit * FileNameLineEdit;
    QPushButton * OpenButton;

    QLabel * FilesizeLabel;
    QLineEdit * FilesizeLineEdit;

    QPushButton * FilesizeButton;


    Ui::MainWindow *ui;

private slots:
    void GetFileInfo();
    void GetFilesize();


};
#endif // MAINWINDOW_H

#include <QMessageBox>
#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //创建Qdialog窗体设置垂直布局

    //创建Qlabel控件
    QDialog *dialog = new QDialog(this);
    dialog->setWindowTitle("Dialog");
    //dialog->resize(400, 600);
    //设置背景颜色
    //dialog->setStyleSheet("background-color: rgb(25, 210, 55);");
    //设置dialog布局
    QGridLayout *vboxLayout = new QGridLayout(dialog);


    FileNameLabel =new QLabel("文件名:", dialog);
    FileNameLineEdit=new QLineEdit(dialog);
    OpenButton=new QPushButton("打开文件", dialog);

    //创建水平布局
    QHBoxLayout *hboxLayout = new QHBoxLayout();
    hboxLayout->addWidget(FileNameLabel);
    hboxLayout->addWidget(FileNameLineEdit);
    hboxLayout->addWidget(OpenButton);
    //添加到vboxLayout
    vboxLayout->addLayout(hboxLayout, 0, 0 );

    FilesizeLabel =new QLabel("文件大小:", dialog);
    FilesizeLineEdit=new QLineEdit(dialog);
    QHBoxLayout *hboxLayout2 = new QHBoxLayout();
    hboxLayout2->addWidget(FilesizeLabel);
    hboxLayout2->addWidget(FilesizeLineEdit);
    vboxLayout->addLayout(hboxLayout2, 1, 0 );

    FilesizeButton=new QPushButton("获取文件大小", dialog);
    vboxLayout->addWidget(FilesizeButton, 2, 0);


    //设置信号槽
    connect(OpenButton, SIGNAL(clicked()), this, SLOT(GetFileInfo()));
    connect(FilesizeButton, SIGNAL(clicked()), this, SLOT(GetFilesize()));


    dialog->show();
}
void MainWindow::GetFileInfo(){
    //打开一个文件选择对话框
    QString fileName = QFileDialog::getOpenFileName(this, "打开文件", "", "All Files (*)");
    //判断文件是否存在
    if (fileName.isEmpty()) {
        QMessageBox::warning(this, "警告", "请选择文件");
        return;
    }
    //显示文件名
    FileNameLineEdit->setText(fileName);


}
void MainWindow::GetFilesize(){
    //获取文件大小
    QString fileName = FileNameLineEdit->text();//获取文件名
    QFile file(fileName);//打开文件

    //判断文件是否存在
    if (!file.open(QIODevice::ReadOnly)) {
        QMessageBox::warning(this, "警告", "打开文件失败");
        return;
    }
    //获取文件大小
    qint64 size = file.size();
    //显示文件大小
    FilesizeLineEdit->setText(QString::number(size/1024.00, 'f', 2) + "KB");//这里代码计算了文件大小,单位为KB float型 保留两位小数
    file.close();
}





MainWindow::~MainWindow()
{
    delete ui;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值