Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用文本文件中的内容填充Qt ListView?_C++_Qt - Fatal编程技术网

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);