PDA

View Full Version : Save and read data from tableWidget to XML file



Coder5546
30th November 2012, 12:36
Hi, I have a problem. I want to save my items from tableWidget to Xml file, and load them into a table with xml.


void MainWindow::AddItemsToTable()
{
CheckAddingEmptyValue();

int row = ui->tableWidget->rowCount();
ui->tableWidget->insertRow(row);

for(int i = 0; i < ui->tableWidget->columnCount(); ++i)
ui->tableWidget->setItem(row, i, new QTableWidgetItem(""));

Q_ASSERT(ui->tableWidget->item(row, 0));
ui->tableWidget->item(row, 0)->setText(ui->lineEdit_3->text());

Q_ASSERT(ui->tableWidget->item(row, 1));
ui->tableWidget->item(row, 1)->setText(ui->lineEdit_2->text());

Q_ASSERT(ui->tableWidget->item(row, 2));
ui->tableWidget->item(row, 2)->setText(ui->lineEdit->text());
}

void MainWindow::SaveDataToXml()
{
QFile file("Data.xml");
if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate))
{
QMessageBox msgBox;
msgBox.setWindowTitle("Error");
msgBox.setIcon(QMessageBox::Warning);
msgBox.setInformativeText(trUtf8("Cannot write file !"));
msgBox.setStandardButtons(QMessageBox::Ok);
}

QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument("1.0");

//?????????????????????????????????//
// Code that write table data to xml///
//////////////////////////////////////////
/////////////////////////////////////////
////////////////////////////////////////

}
xmlWriter.writeEndDocument();

file.close();
if (file.error())
{
QMessageBox msgBox;
msgBox.setWindowTitle("Error");
msgBox.setIcon(QMessageBox::Warning);
msgBox.setInformativeText(trUtf8("Cannot write file !"));
msgBox.setStandardButtons(QMessageBox::Ok);
}
}


void MainForm::ReadDataFromXml()
{
QFile file("Data.xml");
if (!file.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox msgBox;
msgBox.setWindowTitle("Error");
msgBox.setIcon(QMessageBox::Warning);
msgBox.setInformativeText(trUtf8("Cannot open database file !"));
msgBox.setStandardButtons(QMessageBox::Ok);
}

//?????????????????????????????????//
// Code that read xml and add data do Table///
//////////////////////////////////////////
/////////////////////////////////////////
////////////////////////////////////////

file.close();
if (file.error() != QFile::NoError)
{
QMessageBox msgBox;
msgBox.setWindowTitle("Error");
msgBox.setIcon(QMessageBox::Warning);
msgBox.setInformativeText(trUtf8("Cannot read database file !"));
msgBox.setStandardButtons(QMessageBox::Ok);
}
}

void MainForm::on_pushButton_clicked()
{
AddItemsToTable();
SaveDataToXml();
}



I need help
Regards :)

anda_skoa
30th November 2012, 17:54
One common way to represent a table in XML is to have one XML element per row and within the row element one XML element per cell. The cell's data can be saved as the cell element's text.

So for each row you would call writeStartElement with the row tag name, then for each column in that row writeStartElement with the cell tag name and using writeCharacters to write each cell's data.

You then close the tags using writeEndElement() where appropriate.

Have a look at the bookmark example in the Qt Documentation for XML Streaming

Cheers,
_