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

首頁 > 學院 > 開發設計 > 正文

Qt將圖片保存為XML文件或者變為QSting

2019-11-11 05:41:06
字體:
來源:轉載
供稿:網友

軟件實現

只能打開用這個軟件生成的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); // 如果沒有讀到文檔結尾,而且沒有出現錯誤 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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潼关县| 辉南县| 太湖县| 吉木萨尔县| 随州市| 班戈县| 馆陶县| 灵川县| 南雄市| 屯昌县| 京山县| 龙江县| 章丘市| 武宁县| 邹平县| 长海县| 千阳县| 库尔勒市| 三原县| 文安县| 福建省| 兴仁县| 武义县| 金平| 祁门县| 颍上县| 清流县| 宁乡县| 大英县| 万盛区| 田林县| 泗洪县| 湖州市| 二连浩特市| 桓台县| 高要市| 乐亭县| 秦皇岛市| 巴塘县| 珠海市| 陈巴尔虎旗|