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
发布于 2015-12-06 19:27:54
好了,伙计们,我解决了这个问题。我的代码(尽管它不是目前最优化的代码)实际上是很好的。问题是,在UI设置之前,我正在调用封装这个代码片段getFiles()的函数(facepalm,我知道):
getFiles();
ui->setupUi(this);这导致指向ui->listView的指针被吓坏了。现在代码是这样的:
ui->setupUi(this);
getFiles();
...无论如何,谢谢大家对迭代器代码的改进建议!我相信我还会带着更多的回来!
编辑:当2天计时器结束时,我会把这个标记为答案。
https://stackoverflow.com/questions/34118797
复制相似问题