我是靠谱客的博主 搞怪金针菇,这篇文章主要介绍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()
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14void 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索引失败,改为
复制代码
1LineEditAddress->setText(listAddress.at(1).toString());
即可。
最后
以上就是搞怪金针菇最近收集整理的关于QT编译出错——ASSERT failure in QList
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复