麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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

2019-11-11 05:03:02
字體:
來源:轉載
供稿:網友

軟件實現

只能打開用這個軟件生成的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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人在线视频精品 | 国产成人强伦免费视频网站 | sese在线视频 | av成人在线免费观看 | 午夜激情视频免费 | 久久久久国产一区二区三区不卡 | 国产精品视频免费网站 | 激情综合婷婷久久 | 欧美黄色三级视频 | 黄视频免费在线观看 | 精品国产一区二区三区久久久蜜月 | 欧美一级爱爱 | 亚洲福利在线观看视频 | 国产精品视频一区二区噜噜 | 精品一区二区久久久久久按摩 | 久草在线新时代视觉 | 久久久久久麻豆 | 久久久精品视 | 九九热免费精品 | 激情网站视频 | 日日摸夜夜骑 | 国产精品9191| 88xx成人精品视频 | 欧美成人精品一区二区男人小说 | 欧美一区二区三区中文字幕 | 国产污污视频 | 久久久久久久久日本理论电影 | 成人综合免费视频 | 91精选视频在线观看 | 欧美精品免费一区二区三区 | 91天堂国产在线 | 中文字幕在线观看网址 | 成人在线观看免费高清 | 性欧美极品xxxx欧美一区二区 | 午夜av男人的天堂 | 成年免费大片黄在线观看岛国 | 国产免费观看电影网站 | 亚洲成人精品久久久 | 欧美一级免费视频 | 国产伊人色 | 亚洲人成中文字幕在线观看 |