C++ 如何使用文本文件中的内容填充Qt ListView?
我有一个包含许多词汇表的文本文件,每个词汇表之间用新行分隔C++ 如何使用文本文件中的内容填充Qt ListView?,c++,qt,C++,Qt,我有一个包含许多词汇表的文本文件,每个词汇表之间用新行分隔 如何使用文本文件中的词汇填充Qt ListView?您需要逐行读取文件,并添加到QStringList,然后添加到ListView中 QStringList *allLines = new QStringList(); //Your list for lines from the file. allLines->clear(); QStringListModel *linesModel = new QStringListM
如何使用文本文件中的词汇填充Qt ListView?您需要逐行读取文件,并添加到QStringList,然后添加到ListView中
QStringList *allLines = new QStringList(); //Your list for lines from the file.
allLines->clear();
QStringListModel *linesModel = new QStringListModel(*allLines, NULL); //Your model to set to the view.
QFile file("/path/to/yourFileName.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QByteArray line = file.readLine(); //Lines are read as QByteArray.
const char *line_c = line.data(); //convert to const char*
QString line_str = QString(QLatin1String(line_c)); //And finally convert to QString
allLines->append(line_str); //Add to the list
}
linesModel->setStringList(*allLines); //Set your model's list your stringlist
listView->setModel(linesModel); //set model of your listView linesModel. You need to use your listView's name, which might be ui->listView.
QStringListModel*模型;
//创建模型
模型=新的QStringListModel(本);
QStringList字符串列表;
//打开文件
QFile文本文件(“/”);
如果(!textFile.open(QIODevice::ReadOnly)){
QMessageBox::信息(0,“错误”,textFile.errorString());
}
//要从文件中读取的teststream
QTextStream textStream(&textFile);
while(true)
{
QString line=textStream.readLine();
if(line.isNull())
打破
其他的
追加(行);//填充stringList
}
//填充模型
模型->设置字符串列表(字符串列表);
//将模型和视图粘合在一起
ui->listView->setModel(模型);
//如果要向listview添加其他功能。
用户界面->列表视图->
setEditTriggers(QAbstractItemView::AnyKeyPressed|
qabstractemview::双击);
您可以将您的词汇读入QStringList
并使用。您应该避免不必要的指针。没有理由初始化堆上的所有行。自动变量在这里更有意义。您建议如何使用QListWidget执行相同的操作?因为模型不能与QListWidget一起使用
QStringListModel *model;
// Create model
model = new QStringListModel(this);
QStringList stringList;
// open the file
QFile textFile("/<FullPath>/<fileName>");
if(!textFile.open(QIODevice::ReadOnly)) {
QMessageBox::information(0,"Error",textFile.errorString());
}
// teststream to read from file
QTextStream textStream(&textFile);
while (true)
{
QString line = textStream.readLine();
if (line.isNull())
break;
else
stringList.append(line); // populate the stringlist
}
// Populate the model
model->setStringList(stringList);
// Glue model and view together
ui->listView->setModel(model);
// if you want to add additional feature to listview.
ui->listView->
setEditTriggers(QAbstractItemView::AnyKeyPressed |
QAbstractItemView::DoubleClicked);