QT_QFileDialog类文件对话框

QT_QFileDialog类文件对话框 文章目录QFileDialog类文件对话框常用静态方法打开单个文件打开多个文件保存文件选择目录常用过滤器写法常用选项QFileDialog::Option面向对象方式使用更灵活案例QFileDialog类文件对话框QFileDialog是Qt中用于打开/保存文件的标准文件对话框类继承自QDialog提供了与操作系统风格一致的文件选择界面。常用静态方法打开单个文件QString fileNameQFileDialog::getOpenFileName(this,// 父窗口打开文件,// 对话框标题/home,// 默认打开路径文本文件 (*.txt);;所有文件 (*.*)// 文件过滤器);打开多个文件QStringList fileNamesQFileDialog::getOpenFileNames(this,选择多个文件,/home,图片文件 (*.png *.jpg *.bmp);;所有文件 (*.*));保存文件QString fileNameQFileDialog::getSaveFileName(this,保存文件,/home/untitled.txt,文本文件 (*.txt);;所有文件 (*.*));选择目录QString dirQFileDialog::getExistingDirectory(this,选择目录,/home,QFileDialog::ShowDirsOnly|QFileDialog::DontResolveSymlinks);常用过滤器写法// 单一类型文本文件 (*.txt)// 多种类型用分号分隔图片文件 (*.png *.jpg *.bmp);;文档文件 (*.pdf *.docx)// 所有文件所有文件 (*.*);;是分隔不同过滤器组的标志用户可在对话框底部的下拉框中切换。常用选项QFileDialog::Option选项说明ShowDirsOnly只显示目录DontResolveSymlinks不解析符号链接DontUseNativeDialog不使用系统原生对话框使用Qt自带样式ReadOnly只读模式HideNameFilterDetails隐藏过滤器中的后缀细节面向对象方式使用更灵活QFileDialogdialog(this);dialog.setWindowTitle(选择文件);dialog.setFileMode(QFileDialog::ExistingFiles);// 可选多个已有文件dialog.setNameFilter(文本文件 (*.txt));dialog.setDirectory(/home);if(dialog.exec()QDialog::Accepted){QStringList filesdialog.selectedFiles();for(constQStringfile:files){qDebug()file;}}案例代码#ifndefQFILEDAOG_H#defineQFILEDAOG_H#includeQDialog#includeQLabel#includeQLineEdit#includeQPushButton#includeQHBoxLayout#includeQVBoxLayout#includeQFileDialogclassQFileDaog:publicQDialog{Q_OBJECTpublic:QFileDaog(QWidget*parentnullptr);~QFileDaog();private:QLabel*fileNameLabel;QLineEdit*fileNameLineEdit;QPushButton*fileButton;QLabel*fileSizeLabel;QLineEdit*fileSizeLabelLineEdit;QPushButton*getFileInfoButton;privateslots:voidGetFileInfo();// 用于打开文件voidGetFileSizeFunc();// 用于获取文件大小};#endif// QFILEDAOG_H#includeqfiledaog.hQFileDaog::QFileDaog(QWidget*parent):QDialog(parent){setWindowTitle(FileDialog类(文件对话框测试));// 1. 创建控件fileNameLabelnewQLabel(文件名称:);fileNameLineEditnewQLineEdit;fileButtonnewQPushButton(选择...);// 2. 文件大小fileSizeLabelnewQLabel(文件大小);fileSizeLabelLineEditnewQLineEdit;getFileInfoButtonnewQPushButton(获取文件大小信息);// 2. 排列布局QGridLayout*glayoutnewQGridLayout;glayout-addWidget(fileNameLabel,0,0);glayout-addWidget(fileNameLineEdit,0,1);glayout-addWidget(fileButton,0,2);glayout-addWidget(fileSizeLabel,1,0);glayout-addWidget(fileSizeLabelLineEdit,1,1,1,2);QHBoxLayout*hlayoutnewQHBoxLayout;hlayout-addWidget(getFileInfoButton);QVBoxLayout*vlayoutnewQVBoxLayout(this);vlayout-addLayout(glayout);vlayout-addLayout(hlayout);connect(fileButton,SIGNAL(clicked()),this,SLOT(GetFileInfo()));connect(getFileInfoButton,SIGNAL(clicked()),this,SLOT(GetFileSizeFunc()));}QFileDaog::~QFileDaog(){}voidQFileDaog::GetFileInfo(){QString strFileNameQFileDialog::getOpenFileName(this,打开,/,Files(*));fileNameLineEdit-setText(strFileName);}voidQFileDaog::GetFileSizeFunc(){// 获取单行编辑框里面的文件路径QString strFileNamesfileNameLineEdit-text();QFileInfofileInfo(strFileNames);qint64 fileSizefileInfo.size();fileSizeLabelLineEdit-setText(QString::number(fileSize));}end