国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Qt將圖片保存為XML文件或者變?yōu)镼Sting

2019-11-11 04:32:46
字體:
供稿:網(wǎng)友

軟件實(shí)現(xiàn)

只能打開用這個(gè)軟件生成的xml文件,因?yàn)闃?biāo)簽不一樣有可能導(dǎo)致錯(cuò)誤

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow();PRivate slots: void on_loadImageBtn_clicked(); void on_saveBtn_clicked(); void on_loadXmlBtn_clicked();private: Ui::MainWindow *ui;};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QFile>#include <QFileDialog>#include <QMessageBox>#include <QTextStream>#include <QPixmap>#include <QDebug>#include <QByteArray>#include <QBuffer>#include <QXmlStreamWriter>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_loadImageBtn_clicked(){ QString line; //file1文件保存的是上一次打開文件的地址 QFile file1("/savefile.txt"); if(file1.open(QIODevice::ReadOnly)) { QTextStream in(&file1); line = in.readLine(); } file1.close(); QString fileName = QFileDialog::getOpenFileName(this,"Open Image",line,tr("Image files(*.png *.jpg *.bmp)")); //上面的這一部分操作保證的是打開的是上一次的上傳的文件 //將這次打開的文件的地址重新寫入到保存文件地址的文件中,如果用戶沒有重新選擇就不用保存 if(fileName.isEmpty())//用戶沒選中文件,接著進(jìn)行下面的操作就會(huì)崩潰,因?yàn)閟是一個(gè)空字符串 return; if(file1.open((QIODevice::WriteOnly))) { QTextStream in(&file1); in<<fileName; } file1.close(); QImage *image = new QImage(); if(!image->load(fileName)) { QMessageBox::information(this,tr("Open Image Failed"),tr("Open Image Failed")); delete image; return; } else { ui->label->setPixmap(QPixmap::fromImage(*image)); }}void MainWindow::on_saveBtn_clicked(){ const QPixmap *pixmap = ui->label->pixmap(); QImage image = pixmap->toImage(); QByteArray ba; QBuffer buffer(&ba); if(!buffer.open(QIODevice::WriteOnly)) { QMessageBox::information(this,tr("Save Xml"),tr("Save Xml Failed")); } //必須指明保存格式 image.save(&buffer,"PNG"); buffer.close(); QByteArray array = ba.toHex(); QString temp = array; QFile file("my.xml"); if(!file.open(QFile::WriteOnly | QFile::Text)) return; QXmlStreamWriter stream(&file); stream.setAutoFormatting(true); stream.writeStartDocument(); stream.writeStartElement("file"); stream.writeTextElement("image",temp); stream.writeEndElement(); stream.writeEndDocument(); file.close();}void MainWindow::on_loadXmlBtn_clicked(){ QString fileName = QFileDialog::getOpenFileName(this,"Open Xml","",tr("Image files(*.xml)")); QFile file(fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) return; QXmlStreamReader reader(&file); // 如果沒有讀到文檔結(jié)尾,而且沒有出現(xiàn)錯(cuò)誤 while (!reader.atEnd()) { // 讀取下一個(gè)記號(hào),它返回記號(hào)的類型 QXmlStreamReader::TokenType type = reader.readNext(); if (type == QXmlStreamReader::Characters && !reader.isWhitespace()) { QPixmap pixmap; pixmap.loadFromData(QByteArray::fromHex(reader.text().toLatin1())); ui->label->setPixmap(pixmap); } }}

這里寫圖片描述

參考文獻(xiàn)

[1]http://www.qtcn.org/bbs/simple/?t30732.html


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 观塘区| 新泰市| 南开区| 萨迦县| 中卫市| 仁怀市| 邵东县| 德兴市| 南皮县| 永平县| 涿州市| 洞头县| 色达县| 上虞市| 梅河口市| 邹城市| 呈贡县| 凤翔县| 来安县| 公安县| 句容市| 海城市| 拜城县| 桐柏县| 庄河市| 龙门县| 晋州市| 大兴区| 德兴市| 荣成市| 若尔盖县| 图木舒克市| 同江市| 玉林市| 濮阳县| 郸城县| 博白县| 岗巴县| 尉犁县| 江华| 新泰市|