Qt <t> :: at中的ASSERT失败:Qt 5中的“索引超出范围”</t>

时间:2013-10-10 14:13:00

标签: qt5

我想使用qrand()函数在qt中随机生成我的目录中的* .png文件。 为此我创建了一个QStringList对象,以便我可以存储我的所有文件 directory.thinking当我运行我的应用程序时,我在我的QStringList对象中有一些文件列表它会粉碎。

我的问题窗格中也有警告:&gt; 警告:未知转义序列:'\ D'[默认启用]

applicationPath = "C:\\Users\\Tekme\Documents\\QtProject\\4Toddler";
                   ^

我添加上述警告问题的原因是,我在窗口机上,所以我认为问题可能是路径问题

代码是

QString MainWindow::randomIcon()
{
        QStringList iconFileList;
        QString searchPath = applicationPath + "\\icons";//applicationPath = 

        QDir directory = QDir(searchPath);
        QStringList filters;
        filters << "*.png";
        directory.setNameFilters(filters);
        iconFileList = directory.entryList(QDir::AllEntries);//i have 6 *.png files


        int randomIndex = qrand() % iconFileList.count();

        return iconFileList.at(randomIndex);//my application crash here
}

即使我尝试用iconFileList.at(2)替换iconFileList.at(randomIndex),它也会粉碎。 我确信我的目录中有两个以上的文件

1 个答案:

答案 0 :(得分:1)

答案在错误中:

applicationPath = "C:\\Users\\Tekme\Documents\\QtProject\\4Toddler";

应该是

applicationPath = "C:\\Users\\Tekme\\Documents\\QtProject\\4Toddler";

您缺少额外的斜杠