Qt 5.5 程序崩溃与 QStringListModel
Qt 5.5 Program crash with QStringListModel
这里是 Qt 菜鸟!我试图创建一个迭代器来查找给定文件夹中的所有 .txt 文件,将其添加到 QStringList 并将其传递给 QListView。但是当我声明一个新的 QStringListModel 时,我收到
The program has unexpectedly finished
当我 运行 处于调试和发布模式时。这是相关代码:
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
好的伙计们,我设法解决了问题。我的代码(尽管事实上它目前并不是最优化的)实际上很好。问题是我正在 调用封装此代码段的函数 ,getFiles(),在 UI 设置之前(捂脸,我知道):
getFiles();
ui->setupUi(this);
这导致指向 ui->listView 的指针崩溃。现在代码是这样的:
ui->setupUi(this);
getFiles();
...
无论如何,非常感谢大家对改进迭代器代码的建议!我相信我会回来的!
编辑:我会在 2 天计时器到时将其标记为已回答。
这里是 Qt 菜鸟!我试图创建一个迭代器来查找给定文件夹中的所有 .txt 文件,将其添加到 QStringList 并将其传递给 QListView。但是当我声明一个新的 QStringListModel 时,我收到
The program has unexpectedly finished
当我 运行 处于调试和发布模式时。这是相关代码:
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
好的伙计们,我设法解决了问题。我的代码(尽管事实上它目前并不是最优化的)实际上很好。问题是我正在 调用封装此代码段的函数 ,getFiles(),在 UI 设置之前(捂脸,我知道):
getFiles();
ui->setupUi(this);
这导致指向 ui->listView 的指针崩溃。现在代码是这样的:
ui->setupUi(this);
getFiles();
...
无论如何,非常感谢大家对改进迭代器代码的建议!我相信我会回来的!
编辑:我会在 2 天计时器到时将其标记为已回答。