Ich versuche, Daten von einem QTableWidget
zu lesen und sie in einer CSV-Datei zu speichern.Unerwünschtes Zeichen in der CSV-Datei beim Serialisieren von QTableWidget
Die in der Datei gespeicherten Werte sind korrekt, aber für die erste Spalte in jeder Zeile gibt es am Anfang ein unerwünschtes Zeichen.
Hier ist mein Code:
void Task::on_button_Export_clicked()
{
QString fileName = QFileDialog::getSaveFileName(this,tr("Export Task List"), "",tr("CSV Files (*.csv)"));
if (fileName.isEmpty())
return;
else
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly))
{
QMessageBox::information(this, tr("Unable to open file"),
file.errorString());
return;
}
QDataStream out(&file);
out.setVersion(QDataStream::Qt_5_4);
int rowCount = ui->tableWidget->rowCount();
int colCount = ui->tableWidget->columnCount();
for (int i = 0; i < rowCount; i++)
{
QString str(QString::null);
/* if (i > 0)
{
str = "\n";
}*/
for (int j = 0; j < colCount; j++)
{
if (j > 0)
{
str += ",";
}
QTableWidgetItem* item = ui->tableWidget->item(i,j);
str += item->data(Qt::DisplayRole).toString();
}
str += "\n";
out << str;
}
}
}
Die gespeicherte Datei sieht wie folgt aus:
ÎDPC Task
ÞMain Task
ÌWorkLoop
ÐWorkLoop
ÌIST0
ÊIST1
ÆIST2
ich verwende Qt 5.4.0.
Jede Hilfe hier würde sehr geschätzt werden.
'QString str (QString :: null);' - was ist das? Schreiben Sie einfach 'QString str;'. Übrigens gibt es die 'QTextStream' Klasse zum Erstellen von Strings. –
Ich versuchte String str zuerst. Meine Vermutung war, dass es einen Garbage-Wert bekam, der später in QString str (QString :: null) geändert wurde, um es mit Null zu initialisieren –