gpt4 book ai didi

c# - 从 QFile 的内容填充 QListView 的最快方法是什么?

转载 作者:行者123 更新时间:2023-11-30 05:47:38 26 4
gpt4 key购买 nike

使用 QFile,我正在阅读一个包含 16,280 个词汇表的纯文本文件,每个词汇表占一行。然后我将内容逐行附加到 QStringListQStringList 被送入填充 QListViewQStringListModel

QFile 内容逐行附加到 QStringList 使我不得不等待很长时间。这是我的代码:

void MainWindow::populateListView()
{
QElapsedTimer elapsedTimer;
elapsedTimer.start();

// Create model
stringListModel = new QStringListModel(this);

// open the file
QFile file("Data\\zWordIndex.txt");
if (!file.open(QFile::ReadOnly | QFile::Text)) {
statusBar()->showMessage("Cannot open file: " + file.fileName());
}

// teststream to read from file
QTextStream textStream(&file);

while (true)
{
QString line = textStream.readLine();
if (line.isNull())
break;
else
stringList.append(line); // populate the stringlist
}

// Populate the model
stringListModel->setStringList(stringList);

// Glue model and view together
ui->listView->setModel(stringListModel);

//Select the first listView index and populateTextBrowser
const QModelIndex &index = stringListModel->index(0,0);
ui->listView->selectionModel()->select(index, QItemSelectionModel::Select);
populateTextBrowser(index);

//Show time
statusBar()->showMessage("Loaded in " + QString::number(elapsedTimer.elapsed()) + " milliseconds");
}

我还用 C# 开发了相同的应用程序。在 C# 中,我简单地使用:listBox1.DataSource = System.IO.File.ReadAllLines(filePath); 非常快,快如闪电。

这次我使用 C++Qt 开发我的应用程序。你能告诉我一个类似的方法,最快的方法,从 QFile 的内容填充 QListView 吗?

最佳答案

在这里使用QTextSteam 不会给您带来任何好处,它只会产生一些开销。直接使用 QFile 可能要快得多:

while (!file.atEnd())
{
QByteArray lineData = file.readLine();
QString line(lineData);
stringList.append(line.trimmed()); // populate the stringlist
}

另一种方法是使用 readAll 读取整个文件并使用 split 解析它:

stringList = QString(file.readAll()).split("\n", QString::SkipEmptyParts);

关于c# - 从 QFile 的内容填充 QListView 的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512174/

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