Qt中实现把QTableView控件中的数据导出到文本(包括表头),请给我完整代码
时间: 2024-02-11 22:05:31 浏览: 114
以下是一个简单的示例代码:
```cpp
#include <QApplication>
#include <QTableView>
#include <QStandardItemModel>
#include <QFile>
#include <QTextStream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个QTableView控件和一个QStandardItemModel模型
QTableView tableView;
QStandardItemModel model(4, 3);
model.setHorizontalHeaderLabels({"Name", "Age", "Gender"});
tableView.setModel(&model);
// 添加数据到模型中
model.setData(model.index(0, 0), "Alice");
model.setData(model.index(0, 1), 25);
model.setData(model.index(0, 2), "Female");
model.setData(model.index(1, 0), "Bob");
model.setData(model.index(1, 1), 30);
model.setData(model.index(1, 2), "Male");
model.setData(model.index(2, 0), "Charlie");
model.setData(model.index(2, 1), 20);
model.setData(model.index(2, 2), "Male");
model.setData(model.index(3, 0), "Dave");
model.setData(model.index(3, 1), 35);
model.setData(model.index(3, 2), "Male");
// 导出数据到文本文件
QFile file("table_data.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
// 输出表头
QStringList headerList;
for (int i = 0; i < model.columnCount(); i++) {
headerList << model.headerData(i, Qt::Horizontal).toString();
}
out << headerList.join('\t') << '\n';
// 输出数据
for (int row = 0; row < model.rowCount(); row++) {
QStringList rowList;
for (int column = 0; column < model.columnCount(); column++) {
QModelIndex index = model.index(row, column);
rowList << model.data(index).toString();
}
out << rowList.join('\t') << '\n';
}
file.close();
}
tableView.show();
return a.exec();
}
```
这个示例程序创建了一个4行3列的表格,并将数据导出到名为"table_data.txt"的文本文件中。在导出过程中,首先输出表头,然后逐行输出数据。每一行的数据用制表符分隔,行末以换行符结束。
你可以根据自己的实际需求对代码进行修改和扩展。
阅读全文