in XML-Datei Werte übergeben, Qt bringt Fehlermeldung
Verfasst: 17. Februar 2014 14:34
Hallo,
Ich bin neu hier und eig. kein richtig ausgebildeter Programmierer, sondern Maschinenbauer, da ich aber für mein eigenes Projekt um die Programmierung nicht rumkomme bringe ich es mir selbst bei. Deshalb bitte ich euch ein bisschen um Verständniss.
Zum Problem Selbst.
Ich schreibe ein Programm mit dem ich eine Maschine bedienen möchte. Das ganze erfolgt über den QT-Creator. Dabei soll der Bediener über Buttons der GUI bestimmte Sachen auswählen und ein Wert in einer XML-Datei gespeichert werden und später von einem anderen Programm ausgelesen und weiterverarbeitet werden.
Die XML-Datei erstelle ich über DOM und überschreibe Sie. Die Datei selbst habe ich als eine Ressourcedatei dem Projekt angehängt. Dies funktioniert auch. Nach beenden des programms erscheint jedoch die Meldung dass die XML-Datei ausßerhalb von dem QT Creator verändert wurde und es wird gefragt ob ich diese neu laden möchte.
Erst nach dem neuen Laden ändert sich der Wert der XML datei.
NUn wäre die frage was habe ich falsch gemacht und wie wäre die zu korrigieren.
Ich bin neu hier und eig. kein richtig ausgebildeter Programmierer, sondern Maschinenbauer, da ich aber für mein eigenes Projekt um die Programmierung nicht rumkomme bringe ich es mir selbst bei. Deshalb bitte ich euch ein bisschen um Verständniss.
Zum Problem Selbst.
Ich schreibe ein Programm mit dem ich eine Maschine bedienen möchte. Das ganze erfolgt über den QT-Creator. Dabei soll der Bediener über Buttons der GUI bestimmte Sachen auswählen und ein Wert in einer XML-Datei gespeichert werden und später von einem anderen Programm ausgelesen und weiterverarbeitet werden.
Die XML-Datei erstelle ich über DOM und überschreibe Sie. Die Datei selbst habe ich als eine Ressourcedatei dem Projekt angehängt. Dies funktioniert auch. Nach beenden des programms erscheint jedoch die Meldung dass die XML-Datei ausßerhalb von dem QT Creator verändert wurde und es wird gefragt ob ich diese neu laden möchte.
Erst nach dem neuen Laden ändert sich der Wert der XML datei.
NUn wäre die frage was habe ich falsch gemacht und wie wäre die zu korrigieren.
Code: Alles auswählen
#include "gewichtsauswahl.h"
#include "ui_gewichtsauswahl.h"
#include <QtXml>
#include <QtCore>
#include <QDomDocument>
#include <QErrorMessage>
#include <qerrormessage.h>
#include <QDomNodeList>
#include <QDomNode>
Gewichtsauswahl::Gewichtsauswahl(QWidget *parent) :
QDialog(parent),
ui(new Ui::Gewichtsauswahl)
{
ui->setupUi(this);
QDomDocument document("GewichtAusgewahltesMuesli");
QDomElement root = document.createElement("AuswahlGewicht");
document.appendChild(root);
QDomElement Gewicht = document.createElement("Gewicht");
root.appendChild(Gewicht);
QFile file("C:/Users/alex/Desktop/Interface GUI/Version2/Automat/XMLwERTENEU.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{ }
else
{
QTextStream stream(&file);
stream<<document.toString();
file.close();
}
}
Gewichtsauswahl::~Gewichtsauswahl()
{
delete ui;
}
void Gewichtsauswahl::on_ZuZusammenstellungsvariantenButton_clicked()
{
close();
}
int Gewicht;
void Gewichtsauswahl::on_pushButton_clicked()
{
klassenubersichtvorgefertigtemuesli = new KlassenubersichtVorgefertigteMuesli;
klassenubersichtvorgefertigtemuesli->showFullScreen();
// Open file
QDomDocument doc("GewichtAusgewahltesMuesli");
QFile file("C:/Users/alex/Desktop/Interface GUI/Version2/Automat/XMLwERTENEU.xml");
if (!file.open(QIODevice::ReadOnly)) {
return;
}
// Parse file
if (!doc.setContent(&file)) {
file.close();
return;
}
file.close();
//Modify content
QDomNodeList list = doc.elementsByTagName("AuswahlGewicht");
QDomNode parent = list.at(0);
QDomNode n = parent.firstChild();
if (n.isElement() && n.nodeName()=="Gewicht")
{
QDomElement e = n.toElement();
e.setAttribute("", "500");
}
// Save content back to the file
if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly)) {
return;
}
QByteArray xml = doc.toByteArray();
file.write(xml);
file.close();
};
void Gewichtsauswahl::on_pushButton_250Gramm_clicked()
{
klassenubersichtvorgefertigtemuesli = new KlassenubersichtVorgefertigteMuesli;
klassenubersichtvorgefertigtemuesli->showFullScreen();
// Open file
QDomDocument doc("GewichtAusgewahltesMuesli");
QFile file("C:/Users/alex/Desktop/Interface GUI/Version2/Automat/XMLwERTENEU.xml");
if (!file.open(QIODevice::ReadOnly)) {
return;
}
// Parse file
if (!doc.setContent(&file)) {
file.close();
return;
}
file.close();
//Modify content
QDomNodeList list = doc.elementsByTagName("AuswahlGewicht");
QDomNode parent = list.at(0);
QDomNode n = parent.firstChild();
if (n.isElement() && n.nodeName()=="Gewicht")
{
QDomElement e = n.toElement();
e.setAttribute("", "250");
}
// Save content back to the file
if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly)) {
return;
}
QByteArray xml = doc.toByteArray();
file.write(xml);
file.close();
};
void Gewichtsauswahl::on_pushButton_100Gramm_clicked()
{
klassenubersichtvorgefertigtemuesli = new KlassenubersichtVorgefertigteMuesli;
klassenubersichtvorgefertigtemuesli->showFullScreen();
// Open file
QDomDocument doc("GewichtAusgewahltesMuesli");
QFile file("C:/Users/alex/Desktop/Interface GUI/Version2/Automat/XMLwERTENEU.xml");
if (!file.open(QIODevice::ReadOnly)) {
return;
}
// Parse file
if (!doc.setContent(&file)) {
file.close();
return;
}
file.close();
//Modify content
QDomNodeList list = doc.elementsByTagName("AuswahlGewicht");
QDomNode parent = list.at(0);
QDomNode n = parent.firstChild();
if (n.isElement() && n.nodeName()=="Gewicht")
{
QDomElement e = n.toElement();
e.setAttribute("", "100");
}
// Save content back to the file
if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly)) {
return;
}
QByteArray xml = doc.toByteArray();
file.write(xml);
file.close();
};