admin管理员组文章数量:1794759
QT笔记(6)——Qt打开文件与保存文件
Qt打开文件与保存文件,首先打开文件,qt给了一个方法直接调用就好,如下:
static QString getOpenFileName(QWidget *parent = Q_NULLPTR, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = Q_NULLPTR, Options options = Options());通用解释如下:第一个参数parent,用于指定父组件。注意,很多Qt组件的构造函数都会有这么一个parent参数,并提供一个默认值0; 第二个参数caption,是对话框的标题; 第三个参数dir,是对话框显示时默认打开的目录,"." 代表程序运行目录,"/" 代表当前盘符的根目录(Windows,Linux下/就是根目录了),也可以是平台相关的,比如"C:\\\\"等; 第四个参数filter,是对话框的后缀名过滤器,比如我们使用"Image Files(*.jpg *.png)"就让它只能显示后缀名是jpg或者png的文件。如果需要使用多个过滤器,使用";;"分割,比如"JPEG Files(*.jpg);;PNG Files(*.png)"; 第五个参数selectedFilter,是默认选择的过滤器; 第六个参数options,是对话框的一些参数设定,比如只显示文件夹等等,它的取值是enum QFileDialog::Option,每个选项可以使用 | 运算组合起来。 下面以工程实例具体说打开文件和保存文件具体操作,工程是加载一个图片到label中,在将图片改名保存到指定文件夹中,具体操作如下:
1.新建一个mainwindow工程,在ui里添加一个label,格栅布局;
2.在菜单栏中添加文件》打开,保存,如下:
3.编辑动作,添加槽,如下:
4.转到槽进行编辑,如下:
5.转到槽,选择信号类型:
6.代码如下,mainwindow.h:
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QImage> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); int globalMark;//保存标记用 QImage globalImg;//存储图片用 private slots: void on_ac_openfile_triggered(); void on_ac_save_triggered(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H mainwindow.cpp如下: #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMessageBox> #include <QFileDialog> #include <QDebug> #include <QTime> #include <QDir> #include <QFile> #pragma execution_character_set("utf-8") MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); globalMark=0; } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_ac_openfile_triggered() { ui->label->clear();//先清除label内容 //打开图片操作 QString fileName = QFileDialog::getOpenFileName( this, tr("open image file"), "./", tr("Image files(*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)")); if(fileName.isEmpty()) { QMessageBox mesg; mesg.warning(this,"警告","打开图片失败!"); return; } else { QImage img(fileName); img=img.scaled(ui->label->width(),ui->label->height(),Qt::KeepAspectRatio);//Qt::KeepAspectRatio自适应大小,不变形 ui->label->setPixmap(QPixmap::fromImage(img)); if(img.isNull()) { QMessageBox::information(this,"信","打开文件失败"); } else { globalMark=1;//存储标记,用于判断是否有文件 globalImg=img; } } } void MainWindow::on_ac_save_triggered() { if( globalMark==1)//r如果标记为1,证明有文件加载,不然没有不需要保存 { QString dirPath;//创建文件夹路径 QString filePath;//存储保存路径 QString saveName="保存实验图";//保存图片名字 QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间 QString str = time.toString("yyyyMMdd_hhmmss"); //设置显示格式 filePath = QFileDialog::getExistingDirectory(this,"");//获取文件夹路径 if(filePath.isEmpty()) { QMessageBox::information(this,"信","保存失败"); } else { dirPath=QString("%1/保存实验%2").arg(filePath).arg(str); QDir *temp = new QDir;//声明文件对象 temp->mkdir(dirPath);//创建文件夹 QImage images; images=globalImg;//获取加载图片 //将图片重新命名并保存至刚刚创建的文件夹里 QString savePath=QString("%1//%2.jpg").arg(dirPath).arg(saveName); images.save(savePath);//QImage保存方法 QMessageBox::information(this,"信","保存成功"); } } else { QMessageBox::information(this,"信","保存失败"); } } 效果如下:
版权声明:本文标题:QT笔记(6)——Qt打开文件与保存文件 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686800353a104543.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论