在GUI界面设计中,有时需要“打开文件”按钮,以加载外部文件,则需要我们用QFileDialog的静态函数完成,QT5中几个文件相关函数如下:
函数名 | 作用 |
---|---|
getOpenFileName | 加载用户选择文件的文件名 |
getSaveFileName | 加载用户保存文件的文件名 |
getExistingDirectory | 加载用户选择目录名 |
getOpenFileNames | 加载用户选择文件的文件名列表 |
getOpenFileName的构造函数:
QString QFileDialog::getOpenFileName (
QWidget * parent = 0,
const QString & caption = QString(),
const QString & dir = QString(),
const QString & filter = QString(),
QString * selectedFilter = 0,
Options options = 0 )
第一个参数parent,用于定义父对象。
第二个参数caption,对话框的标题,可设定为“打开文件”、“选择一个目标文件”等自定义标题;
第三个参数dir,对话框显示时默认打开的目录,”.” 代表程序运行目录,”/” 代表当前盘符的根目录,可更改为例如e:/qt/5.5指定路径。
第四个参数filter,对话框的后缀名过滤器,”Files(*.doc *.xls)“就让它只能显示后缀名是doc或者xls的文件,后缀之间用空格隔开。如果需要使用多个过滤器,使用”::”分割。
第五个参数selectedFilter,默认选择的过滤器;
第六个参数options,选择显示格式,默认目录和文件名同时显示。
最终效果如下:
点击打开文件按钮,弹出常规文件选择对话框,选择打开文件,并且显示在文本框中。
具体步骤如下:
1、在.h文件中添加声明头文件;
#include <QLineEdit>
#include <QGridLayout>
2、添加控件声明;
private:
QPushButton *fileBtn;
QLineEdit *fileLineEdit;
QGridLayout *mainLayout;
3、添加自定义函数声明,用于接收按钮按下后打开文件的信号;
private slots:
void showFile();
4、在.cpp中添加声明头文件;
#include<QGridLayout>
#include<QFileDialog>
#include<QPushButton>
5、添加常规按钮、文本框控件初始化执行代码;
fileBtn=new QPushButton;
fileBtn->setText(tr("打开文件..."));
fileLineEdit=new QLineEdit;
mainLayout=new QGridLayout(this);
mainLayout->addWidget(fileBtn,0,1);
mainLayout->addWidget(fileLineEdit,0,0);
connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile())); //按钮按下后信号发出执行操作
6、添加按钮按下后的信号函数showFile();
void Dialog::showFile()
{
QString s = QFileDialog::getOpenFileName(this,"选择文件","/", "Files(*.doc *xls)");
fileLineEdit->setText(s); //将打开文件的文件名显示在文本框中
}