Qt noob здесь! Я пытаюсь создать итератор, чтобы найти все .txt-файлы в данной папке, добавить его в QStringList и передать его в QListView. Но когда я объявляю новый QStringListModel, я получаюQt 5.5 Сбой программы с QStringListModel
Программа неожиданно закончил
, когда я бегу в Debug и Release режим. Вот соответствующий код:
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
Я бы использовал QFileInfo для расщепления путей. Помимо этого я не вижу краха, поэтому я спрашиваю, вы используете бинарные файлы Qt, которые были созданы для вашего компилятора? Вы не можете использовать двоичные файлы, созданные для другой версии визуальной студии. – drescherjm
Насколько я знаю, у меня есть правильные двоичные файлы для VS2013. Спасибо за подсказку QFileInfo! – htmlboss
Ещё одна возможная причина. Был ли ui-> listView действительным указателем? У вас есть настройка ui для вашей формы? – drescherjm