foreach(variables ,Container)关键字是Qt对c++的一个扩展,主要用于按顺序历经容器(container)中的对象,
foreach用法类似于for循环,但是又有所不同,foreach可以使用一个变量名来遍历容器中的所有元素。
foreach宏的参数依次为:元素类型,元素名,容器类型,容器名。
假设有个vector如下面的定义:
vector<int> v; 那么遍历v可以使用下面的代码:
foreach(int e , vector<int> v)
{//使用(e)来访问v的元素
}
例如:
QLinkList list;
QString str;
foreach(str , list)
{
qDebug()<<str;
}
这样就可以历经list里存储的对象了,它的作用相当于标准C++中的iterator
QLinkList list;
QLinkListIterator i(list);
while(i.hasNext()) {
qDebug()<<i.next();
}
例如:获取网络通信参数地址
QList<QHostAddress> list = QNetworkInterface::allAddresses();
foreach (QHostAddress address, list)
{
qDebug() <<address;
}
输出:
QHostAddress( “FE80::2828:5A2D:53EB:AF76%101” )
QHostAddress( “169.222.175.158” )
QHostAddress( “192.168.37.1” )
QHostAddress( “192.168.127.1” )
QHostAddress( “FE80::3C06:E1F9:4614:184E%13” )
QHostAddress( “169.254.34.76” )
QHostAddress( “2001:DA8:C800:AD06:6DEE:7E90:6175:D582” )
QHostAddress( “2001:DA8:C800:AD06:685D:ABC1:38DA:6B99” )
QHostAddress( “FE80::6DEE:7E90:6175:D483%12” )
QHostAddress( “172.20.41.109” )
QHostAddress( “FE80::452C:B25A:D182:8534%12” )
QHostAddress( “192.168.110.1” )
QHostAddress( “FE80::797D:7F5E:605D:DF4B%12” )
QHostAddress( “192.168.49.1” )
QHostAddress( “::1” )
QHostAddress( “127.0.0.1” )
QHostAddress( “2001:0:9D38:6AB8:3CB0:38AD:53EB:D438” )
QHostAddress( “FE80::3CB0:38AD:53EB:D438%11” )