Qt noob在这里!我正试图创建一个迭代器来查找给定文件夹中的所有.txt文件,将其添加到QStringList并将其传递到QListView。但是当我声明一个新的QStringListModel时,我会收到
程序意外地完成了
当我在调试和发布模式下运行时。以下是相关代码:
QDirIterator it(dir, QStringList() << "*.txt", QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories);
if (it.hasNext()) {
while (it.hasNext()) {
QStringList fileList;
// Remove file extension and absolute path from string respectively
QString filenameRaw = it.next();
QString filename = filenameRaw.split(".", QString::SkipEmptyParts).at(0);
// Outputs correctly
qDebug() << filename;
fileList << filename;
// The next line is the problem.
QStringListModel *model = new QStringListModel(ui->listView);
model->setStringList(fileList);
ui->listView->setModel(model);
}
}
这可能是一个愚蠢的问题,但我仍然可以从中学习:p
好的,伙计们,我设法解决了这个问题。我的代码(尽管它目前并不是最优化的)实际上很好。问题是,在设置UI之前,我调用了封装此代码段的函数getFiles()(facepalm,我知道):
getFiles();
ui->setupUi(this);
这导致指向ui->listView的指针异常。现在代码是这样的:
ui->setupUi(this);
getFiles();
...
无论如何,感谢大家提出的改进迭代器代码的建议!我相信我会带更多回来的!
编辑:当2天计时器结束时,我会将其标记为已回答。