I have tree widget. After clicking create button I want that there would be created xml file, which has tree widget's data. Is it possible to do that? If so maybe somebody could tell me how to do that?
Added after 1 8 minutes:
I found some examples in few books. but when I trie to use them few errors
there goes examples:
{
std::cerr << "Error: Cannot write file "
<< qPrintable(fileName) << ": "
<< qPrintable(file.errorString()) << std::endl;
return false;
}
QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("bookindex");
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i)
writeIndexEntry(&xmlWriter, treeWidget->topLevelItem(i));
xmlWriter.writeEndDocument();
file.close();
if (file.error()) {
std::cerr << "Error: Cannot write file "
<< qPrintable(fileName) << ": "
<< qPrintable(file.errorString()) << std::endl;
return false;
}
return true;
}
bool writeXml(const QString &fileName, QTreeWidget *treeWidget)
{
QFile file(fileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) {
std::cerr << "Error: Cannot write file "
<< qPrintable(fileName) << ": "
<< qPrintable(file.errorString()) << std::endl;
return false;
}
QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("bookindex");
for (int i = 0; i < treeWidget->topLevelItemCount(); ++i)
writeIndexEntry(&xmlWriter, treeWidget->topLevelItem(i));
xmlWriter.writeEndDocument();
file.close();
if (file.error()) {
std::cerr << "Error: Cannot write file "
<< qPrintable(fileName) << ": "
<< qPrintable(file.errorString()) << std::endl;
return false;
}
return true;
}
To copy to clipboard, switch view to plain text mode
{
xmlWriter->writeStartElement("entry");
xmlWriter->writeAttribute("term", item->text(0));
QString pageString
= item
->text
(1);
if (!pageString.isEmpty()) {
xmlWriter->writeTextElement("page", page);
}
for (int i = 0; i < item->childCount(); ++i)
writeIndexEntry(xmlWriter, item->child(i));
xmlWriter->writeEndElement();
}
void writeIndexEntry(QXmlStreamWriter *xmlWriter, QTreeWidgetItem *item)
{
xmlWriter->writeStartElement("entry");
xmlWriter->writeAttribute("term", item->text(0));
QString pageString = item->text(1);
if (!pageString.isEmpty()) {
QStringList pages = pageString.split(", ");
foreach (QString page, pages)
xmlWriter->writeTextElement("page", page);
}
for (int i = 0; i < item->childCount(); ++i)
writeIndexEntry(xmlWriter, item->child(i));
xmlWriter->writeEndElement();
}
To copy to clipboard, switch view to plain text mode
So errors that ocurred is with std::cerr and another error that QFile file(fileName); file name wasn't described.
By the way in this example if I do understand it correctly there should be created file before tree is placed there?
Bookmarks