中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt函數名使用方法有哪些

發布時間:2021-12-15 10:26:27 來源:億速云 閱讀:127 作者:iii 欄目:互聯網科技

本篇內容介紹了“Qt函數名使用方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

函數名

    //判斷IP地址及端口是否在線
    static bool ipLive(const QString &ip, int port, int timeout = 1000);
    //獲取網頁所有源代碼
    static QString getHtml(const QString &url);
    //獲取本機公網IP地址
    static QString getNetIP(const QString &webCode);
    //獲取本機IP
    static QString getLocalIP();
    //Url地址轉為IP地址
    static QString urlToIP(const QString &url);

    //字符串補全
    static QString getValue(quint8 value);
    //判斷是否通外網
    static bool isWebOk();

函數體

bool QUIHelper::ipLive(const QString &ip, int port, int timeout)
{
    //局部的事件循環,不卡主界面
    QEventLoop eventLoop;

    //設置超時
    QTimer timer;
    connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit()));
    timer.setSingleShot(true);
    timer.start(timeout);

    QTcpSocket tcpSocket;
    connect(&tcpSocket, SIGNAL(connected()), &eventLoop, SLOT(quit()));
    tcpSocket.connectToHost(ip, port);
    eventLoop.exec();
    bool ok = (tcpSocket.state() == QAbstractSocket::ConnectedState);
    return ok;
}

QString QUIHelper::getHtml(const QString &url)
{
    QNetworkAccessManager *manager = new QNetworkAccessManager();
    QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url)));
    QByteArray responseData;
    QEventLoop eventLoop;
    QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit()));
    eventLoop.exec();
    responseData = reply->readAll();
    return QString(responseData);
}

QString QUIHelper::getNetIP(const QString &webCode)
{
    QString web = webCode;
    web = web.replace(' ', "");
    web = web.replace("\r", "");
    web = web.replace("\n", "");
    QStringList list = web.split("<br/>");
    QString tar = list.at(3);
    QStringList ip = tar.split("=");
    return ip.at(1);
}

QString QUIHelper::getLocalIP()
{
    QStringList ips;
    QList<QHostAddress> addrs = QNetworkInterface::allAddresses();
    foreach (QHostAddress addr, addrs) {
        QString ip = addr.toString();
        if (QUIHelper::isIP(ip)) {
            ips << ip;
        }
    }

    //優先取192開頭的IP,如果獲取不到IP則取127.0.0.1
    QString ip = "127.0.0.1";
    foreach (QString str, ips) {
        if (str.startsWith("192.168.1") || str.startsWith("192")) {
            ip = str;
            break;
        }
    }

    return ip;
}

QString QUIHelper::urlToIP(const QString &url)
{
    QHostInfo host = QHostInfo::fromName(url);
    return host.addresses().at(0).toString();
}

QString QUIHelper::getValue(quint8 value)
{
    QString result = QString::number(value);
    if (result.length() <= 1) {
        result = QString("0%1").arg(result);
    }
    return result;
}

bool QUIHelper::isWebOk()
{
    //能接通百度IP說明可以通外網
    return ipLive("115.239.211.112", 80);
}

“Qt函數名使用方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

qt
AI

九龙坡区| 拉孜县| 临西县| 策勒县| 克拉玛依市| 庆元县| 龙岩市| 大连市| 青河县| 西华县| 邹平县| 江城| 长寿区| 威宁| 建阳市| 宾阳县| 五常市| 将乐县| 临高县| 利辛县| 湖南省| 资讯| 沙湾县| 东乌| 二手房| 宁蒗| 黑水县| 峨眉山市| 旬阳县| 裕民县| 榕江县| 乐平市| 高碑店市| 深泽县| 安平县| 湟中县| 连州市| 额济纳旗| 迁安市| 桃源县| 玉门市|