J'essaie de lire les données d'un QTableWidget
et de les enregistrer dans un fichier CSV.Caractère indésirable dans un fichier CSV lors de la sérialisation à partir de QTableWidget
Les valeurs enregistrées dans le fichier sont correctes, mais pour la première colonne de chaque ligne, il y a un caractère indésirable au début.
Voici mon 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;
}
}
}
Le fichier enregistré ressemble à ceci:
ÎDPC Task
ÞMain Task
ÌWorkLoop
ÐWorkLoop
ÌIST0
ÊIST1
ÆIST2
J'utilise Qt 5.4.0.
Toute aide ici serait grandement appréciée.
'QString str (QString :: null);' - Qu'est-ce que c'est? Il suffit d'écrire 'QString str;'. En passant, il existe une classe 'QTextStream' pour construire des chaînes. –
J'ai essayé String str en premier. Ma conjecture était qu'elle obtenait une certaine valeur de garbag plus tard changé en QString str (QString :: null) pour l'initialiser avec null –