• 5936阅读
  • 3回复

QNetworkInterface::flags()的问题。 [复制链接]

上一主题 下一主题
离线ffii4455
 

只看楼主 倒序阅读 楼主  发表于: 2012-05-20
我想用QNetworkInterface来获取当前的网卡信息。但是出来的东西太多了,很多都不是以太网卡。
于是,我用QNetworkInterface::flags()来判断。 但是,根据qDebug的结果。其返回的是QFlags类型的枚举量 使用‘|’代表某个interface所处状态。
例如  QNetworkInterface::IsUp|QNetworkInterface::IsRunning|QNetworkInterface::CanMulticast  也就是QFlags(0x1|0x2|0x20);

这些状态是同时存在的,但是如何判断一个网卡的状态是IsUP?  

我直接写 == QNetworkInterface::IsUp不可行,必须写成 == QNetworkInterface::IsUp|QNetworkInterface::IsRunning  


如何只判断QNetworkInterface::IsUp?
离线ppdayz

只看该作者 1楼 发表于: 2012-05-21
回 楼主(ffii4455) 的帖子
简单的位运算

QFlags flg = xxxx;
if(flg & QNetworkInterface::IsUp){
   xxxxx;
}
这个技巧很有用的,多看看位运算
离线ppdayz

只看该作者 2楼 发表于: 2012-05-21
回 楼主(ffii4455) 的帖子
举个例子
app = 0x0001, ate = 0x0002, binary = 0x0004,in = 0x0008,  out = 0x0010, trunc = 0x0020
然后有flags

flags |= (app | ate | binary)
就是将flags设置为app, ate和binary
如果要取消ate
就是
flags &=~ate

判断是否有app
就是
if(flags & app){

}
离线ffii4455

只看该作者 3楼 发表于: 2012-05-23
回 2楼(ppdayz) 的帖子
太谢谢了~~~请君一席话胜读十年书啊。以前都没怎么看位运算这块。看来是要好好学学了。
快速回复
限100 字节
 
上一个 下一个