最近我在开发一个GUI应用程序,我想将QTableView的数据保存到.csv或.txt文件中。我使用了这个问题中收到的指引(参见此处),这让我想到是否反过来也可能实现,即是否可以从.csv或.txt文件中填充QTableView。再次强调,我更喜欢基于模型的设计,如QTableView,而不是基于项目的QTableWidget。
如果有任何代码片段或教程文档,都将非常有帮助。
test.csv
的文件(它可以由任何文本编辑器生成):
1,2,3,\n4,5,6,\n7,8,9,\n10,11,12,\n13,14,15,
.csv
文件读取到您的 QTableView
模型中:QStandardItemModel *model = new QStandardItemModel;
QFile file("test.csv");
if (file.open(QIODevice::ReadOnly)) {
int lineindex = 0; // file line counter
QTextStream in(&file); // read to text stream
while (!in.atEnd()) {
// read one line from textstream(separated by "\n")
QString fileLine = in.readLine();
// parse the read line into separate pieces(tokens) with "," as the delimiter
QStringList lineToken = fileLine.split(",", QString::SkipEmptyParts);
// load parsed data to model accordingly
for (int j = 0; j < lineToken.size(); j++) {
QString value = lineToken.at(j);
QStandardItem *item = new QStandardItem(value);
model->setItem(lineindex, j, item);
}
lineindex++;
}
file.close();
}
(您可以操作代码以满足您的表格格式)
.csv
文件。使用 qDebug() 查看文件是否已加载。 - Tay2510.csv
文件的主要思路。您应该根据实际数据格式修改代码并定义数据加载方法。 - Tay2510QStringList lineToken = fileLine.split("\t", QString::SkipEmptyParts);
会因为.split
被弃用而产生警告。 - als0052