这几个函数都是QFileDialog这个类中的静态函数,可以调用当前系统的文件对话框。具体来讲:
getOpenFileName返回一个被用户选中的文件的路径,前提是这个文件是存在的。
getSaveFileName返回一个被用户选中的文件的路径,这个文件可以是不存在的。
getOpenFileNames返回一个或多个被用户选中的文件的路径,前提是这些文件是存在的。
GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。
#include "QtFile.h"
#include <QFile>
#include <QFileDialog>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>
QtFile::QtFile(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
connect(ui.pushButton_read, SIGNAL(clicked()), this, SLOT(slotReade()));
connect(ui.pushButton_write, SIGNAL(clicked()), this, SLOT(slotWrite()));
}
void QtFile::slotReade()
{
//显示标准的“打开”对话框,并获取用户文件名,而不必真正打开任何文件,只是把打开文件名称返回程序。
//GetOpenFilename相当于Excel打开窗口,通过该窗口选择要打开的文件,并可以返回选择的文件完整路径和文件名。
QString path = QFileDialog::getOpenFileName(this, "OPen", "../");
if (!path.isEmpty())
{
//文件对象
QFile file(path);
//打开文件 只读方式
bool isok = file.open(QIODevice::ReadOnly);
{
#if 0
//读文件,默认只识别UTF-8编码
QByteArray array= file.readAll(); //读取所有
ui.textEdit->setText(array);
#endif
QByteArray array;
while (!file.atEnd())
{
array += file.readLine();
}
ui.textEdit->setText(array); //设置文本内容
}
file.close();
QFileInfo info(path);
qDebug() << QString::fromLocal8Bit("文件名字:") << info.fileName().toUtf8().data();
qDebug() << QString::fromLocal8Bit("文件后缀:") << info.suffix();
qDebug() << QString::fromLocal8Bit("文件大小:") << info.size();
qDebug() << QString::fromLocal8Bit("文件创建时间:") << info.created().toString("yyyy-MM-dd hh:mm:ss ddd");
}
}
void QtFile::slotWrite()
{
QString path = QFileDialog::getSaveFileName(this, "save", "../", "TXT(*.txt)");
if (!path.isEmpty())
{
//QFile file(path);
QFile file; //创建文件对象
file.setFileName(path); //关联文件名字
bool isOk = file.open(QIODevice::WriteOnly);
if (isOk)
{
//获取编辑区内容
QString qstr = ui.textEdit->toPlainText();
//QString 转换成 QByteArray
//file.write(qstr.toUtf8());
file.write(qstr.toStdString().data()); //qstr.toLocal8Bit(); //转换成本地8字节
}
file.close();
}
}