c++ - Qt 5.5 程序崩溃与 QStringListModel

标签 c++ qt qt5

这里是 Qt 菜鸟!我试图创建一个迭代器来查找给定文件夹中的所有 .txt 文件,将其添加到 QStringList 并将其传递给 QListView。但是当我声明一个新的 QStringListModel 时,我收到了

The program has unexpectedly finished

当我在调试和 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

最佳答案

好的伙计们,我设法找出问题所在。我的代码(尽管事实上它目前并不是最优化的)实际上很好。问题是我调用函数封装了这个片段,getFiles(), UI 设置之前(facepalm,我知道) :

getFiles();
ui->setupUi(this);

这导致指向 ui->listView 的指针崩溃了。现在代码是这样的:

ui->setupUi(this);
getFiles();
...

无论如何,非常感谢大家提出改进迭代器代码的建议!我相信我会回来的!

编辑:当 2 天计时器到时,我会将其标记为已回答。

关于c++ - Qt 5.5 程序崩溃与 QStringListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34118797/

相关文章:

c++ - 返回对局部变量的引用

c++ - Windows 上的非阻塞套接字在 send() 调用后不会返回

c++ - 双击 QLabel

c++ - 如何使用 Qt 进行触摸屏校准

c++ - Qt Json十进制值

c++ - Qt 5 将 Qt5Core.dll 放在文件夹中

c++ - 在 Win32 中对本地事件使用 select()

c++ - 使用正则表达式在标准映射中查找

c++ - 对模板类链使用可变参数模板来生成序列化

qt - 缩放 QtQuick 绘制的项目