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

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

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

2019-11-11 05:06:23
字體:
供稿:網(wǎng)友

軟件實現(xiàn)

只能打開用這個軟件生成的xml文件,因為標簽不一樣有可能導致錯誤

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())//用戶沒選中文件,接著進行下面的操作就會崩潰,因為s是一個空字符串 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)錯誤 while (!reader.atEnd()) { // 讀取下一個記號,它返回記號的類型 QXmlStreamReader::TokenType type = reader.readNext(); if (type == QXmlStreamReader::Characters && !reader.isWhitespace()) { QPixmap pixmap; pixmap.loadFromData(QByteArray::fromHex(reader.text().toLatin1())); ui->label->setPixmap(pixmap); } }}

這里寫圖片描述

參考文獻

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 方正县| 新蔡县| 亳州市| 延寿县| 体育| 泗水县| 清流县| 金塔县| 靖宇县| 鹤峰县| 修武县| 台北县| 尼勒克县| 玉田县| 香港| 荥经县| 文水县| 沐川县| 伊川县| 石林| 迭部县| 秀山| 耒阳市| 深水埗区| 西乌珠穆沁旗| 溧阳市| 新密市| 许昌县| 乡宁县| 石楼县| 界首市| 洞头县| 玉龙| 慈溪市| 凌云县| 南汇区| 宜君县| 阿克苏市| 常宁市| 望奎县| 东海县|