Qt获取IP地址,子网掩码,网关地址

Qt获取操作系统网络信息挺尴尬的,使用自带的QNetworkInterface不光层级众多,而且很难获取Gateway网关,网上有使用第三方库IPHlpApi获取网关的方法,无疑又会增加复杂度。
这里简单的使用cmd命令+正则匹配来获取,利用Windows提供的ipconfig或者Linux提供的ifconfig等命令迅速获取相关信息:

QString Utils::GetIP(){
    QString ip = "";
    QProcess cmd_pro ;
    QString cmd_str = QString("ipconfig");
    cmd_pro.start("cmd.exe", QStringList() << "/c" << cmd_str);
    cmd_pro.waitForStarted();
    cmd_pro.waitForFinished();
    QString result = cmd_pro.readAll();
    QString pattern("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
    QRegExp rx(pattern);

    int pos = 0, count = 0;
    while((pos = rx.indexIn(result, pos)) != -1){
        ip += rx.cap(0) + ",";
        count++;
        if(count == 3)
            break;
        pos += rx.matchedLength();
    }
    return ip;
}