【发布时间】:2016-10-20 09:55:49
【问题描述】:
我正在尝试从 QTableWidget 读取数据,并将它们保存在 CSV 文件中。
文件中保存的值是正确的,但是对于每一行的第一列,开头都有一个不需要的字符。
这是我的代码:
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;
}
}
}
保存的文件如下所示:
ÎDPC Task
ÞMain Task
ÌWorkLoop
ÐWorkLoop
ÌIST0
ÊIST1
ÆIST2
我使用的是 Qt 5.4.0。
我们将不胜感激。
【问题讨论】:
-
QString str(QString::null);- 这是什么?只需写QString str;。顺便说一句,有QTextStream用于构建字符串的类。 -
我先尝试了 String str。我的猜测是它正在获取一些垃圾值,所以后来将其更改为 QString str(QString::null) 以使用 null 初始化它
标签: c++ qt qt5 qtextstream qdatastream