- 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_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic: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);//添加到vboxLayoutvboxLayout->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;
}