gpt4 book ai didi

c++ - QTableView 导出到 .csv 的行数仅限于 256

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:21 25 4
gpt4 key购买 nike

我编写了一个 gui 程序,它将连接到 oracle 数据库并在键入查询后检索数据。检索到的数据显示在 QTableView 表模型小部件中。然后将 QTableView 的结果导出到 .csv 文件

QString MyQuery = ui->lineQuery->text();
db.open();
QSqlQuery query(MyQuery,db);

if(query.exec())
{
qDebug()<<QDateTime::currentDateTime()<<"QUERY SUCCESS ";
ui->queryButton->setStyleSheet("QPushButton {background-color: rgb(0, 255, 0);}");

this->model=new QSqlQueryModel();
model->setQuery(MyQuery);
ui->tableViewOra->setModel(model);

QString textData;
int rows=model->rowCount();
int columns=model->columnCount();

for (int i = 0; i < rows; i++)
{
for (int j = 0; j < columns; j++)
{
textData += model->data(model->index(i,j)).toString();
textData += ", "; // for .csv file format
}
textData += "\n"; // (optional: for new line segmentation)
}

QFile csvfile("/home/aj/ora_exported.csv");
if(csvfile.open(QIODevice::WriteOnly|QIODevice::Truncate))
{
QTextStream out(&csvfile);
out<<textData;
}
csvfile.close();
}

现在的问题是,在查询期间,我观察到 QTableView 中有 543 行可见(这是正确的,因为有 543 个条目)。但是当导出 .csv 文件时,那里只有 256 行。

是否有任何我不知道的可变大小限制???

如果我想导出大约 1000 行的 .csv 文件,应该注意哪些变量???谢谢。

最佳答案

我认为当您第一次阅读 model->rowCount() 时,模型并没有完全获取所有结果。尽管稍后在显示 TableView 时会获取更多内容,从而在 TableView 中完整显示行。

在读取行数之前尝试使用QSqlQueryModel::fetchMore:

while (model->canFetchMore())
model->fetchMore();

int rows=model->rowCount();
int columns=model->columnCount();

[来自 Tay2510 的附加信息]:

你可以改变文件打开标志

if(csvfile.open(QIODevice::WriteOnly|QIODevice::Truncate))

if(csvfile.open(QIODevice::WriteOnly))

前者将覆盖同一个文件,而后者附加数据。

关于c++ - QTableView 导出到 .csv 的行数仅限于 256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27372078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com