我是靠谱客的博主 搞怪金针菇,最近开发中收集的这篇文章主要介绍QT编译出错——ASSERT failure in QList::at: "index out of range", file E:\\...\include/QtCore/qlist.h ,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
出错:ASSERT failure in QList<T>::at: "index out of range", file E:qtQt5.105.10.0mingw53_32include/QtCore/qlist.h, line 541
原因:QList的索引越界,超出了范围。简而言之,比如:list.at(2)不存在,只存在list.at(0)和list.at(1),而你QT程序中索引到了list.at(2),此时编译就会出现改错误。然而修改为list.at(0)或是list.at(1)时,编译通过。。。既是如此
出现在:《Qt 5 开发及实例》(第三版)第10章 Qt 5 网络与通信中;具体代码如下:
获取主机信息函数getHostInformation()
void networkinformation::getHostInformation()
{
QString localHostName = QHostInfo::localHostName(); //获取本机主机名
LineEditLocalHostName->setText(localHostName);
QHostInfo hostInfo = QHostInfo::fromName(localHostName); //根据主机名获取相关主机信息,包括IP地址等
//获取主机的IP地址列表
QList<QHostAddress> listAddress = hostInfo.addresses();
if(!listAddress.isEmpty()) //获取主机IP地址列表可能为空。在不为空的情况下使用第一个IP地址。
{
LineEditAddress->setText(listAddress.at(2).toString());
}
}
其中listAddress.at(2)是不存在的,导致QList索引失败,改为
LineEditAddress->setText(listAddress.at(1).toString());
即可。
最后
以上就是搞怪金针菇为你收集整理的QT编译出错——ASSERT failure in QList
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复