最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++?Qt開發(fā)之使用QNetworkAccessManager實現(xiàn)Web網(wǎng)頁訪問

 更新時間:2024年03月12日 15:04:20   作者:lyshark  
Qt?是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,本文主要介紹了如何運用QNetworkAccessManager組件實現(xiàn)Web網(wǎng)頁訪問,需要的可以參考下

Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹如何運用QNetworkAccessManager組件實現(xiàn)Web網(wǎng)頁訪問。

QNetworkAccessManager是Qt網(wǎng)絡(luò)模塊中的關(guān)鍵類,用于管理網(wǎng)絡(luò)訪問和請求。作為一個網(wǎng)絡(luò)請求的調(diào)度中心,它為Qt應(yīng)用程序提供了發(fā)送和接收各種類型的網(wǎng)絡(luò)請求的能力,包括常見的GET、POST、PUT、DELETE等。這個模塊的核心功能在于通過處理QNetworkReplyQNetworkRequest來實現(xiàn)與網(wǎng)絡(luò)資源的交互。

通過QNetworkAccessManager,Qt應(yīng)用程序能夠輕松地與遠(yuǎn)程服務(wù)器通信,獲取數(shù)據(jù)或?qū)?shù)據(jù)上傳到服務(wù)器。這種網(wǎng)絡(luò)請求的管理不僅是異步的,以確保不會阻塞主線程,還提供了豐富的信號和槽機(jī)制,使得開發(fā)者可以靈活地處理不同階段的網(wǎng)絡(luò)操作。

通常,QNetworkAccessManager會與QNetworkReplyQNetworkRequest一起使用。QNetworkRequest用于封裝和配置網(wǎng)絡(luò)請求的各種屬性,例如URL、請求頭等。而QNetworkReply則代表了對網(wǎng)絡(luò)請求的響應(yīng),包含了請求返回的數(shù)據(jù)和相關(guān)信息。這三者共同協(xié)作,為Qt應(yīng)用程序提供了便捷、靈活且強(qiáng)大的網(wǎng)絡(luò)通信能力。

1.通用API函數(shù)

1.1QNetworkAccessManager

要想實現(xiàn)網(wǎng)絡(luò)通信首先需要新建一個網(wǎng)絡(luò)訪問管理器,以下是QNetworkAccessManager類中的一些常用函數(shù)及其描述:

函數(shù)描述
QNetworkAccessManager(QObject *parent = nullptr)構(gòu)造函數(shù),創(chuàng)建一個QNetworkAccessManager實例。
virtual ~QNetworkAccessManager()虛析構(gòu)函數(shù),釋放QNetworkAccessManager實例。
QNetworkReply *get(const QNetworkRequest &request)發(fā)送GET請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *post(const QNetworkRequest &request, QIODevice *data)發(fā)送POST請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *post(const QNetworkRequest &request, const QByteArray &data)發(fā)送POST請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *put(const QNetworkRequest &request, QIODevice *data)發(fā)送PUT請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *put(const QNetworkRequest &request, const QByteArray &data)發(fā)送PUT請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *deleteResource(const QNetworkRequest &request)發(fā)送DELETE請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *head(const QNetworkRequest &request)發(fā)送HEAD請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, QIODevice *data = nullptr)發(fā)送自定義請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
QNetworkReply *sendCustomRequest(const QNetworkRequest &request, const QByteArray &verb, const QByteArray &data)發(fā)送自定義請求,并返回與請求關(guān)聯(lián)的QNetworkReply對象。
void setConfiguration(const QNetworkConfiguration &config)設(shè)置網(wǎng)絡(luò)配置,用于定制網(wǎng)絡(luò)行為。
QNetworkConfiguration configuration() const獲取當(dāng)前網(wǎng)絡(luò)配置。
void clearAccessCache()清除網(wǎng)絡(luò)訪問緩存。
void setCache(QAbstractNetworkCache *cache)設(shè)置網(wǎng)絡(luò)緩存。
QAbstractNetworkCache *cache() const獲取當(dāng)前網(wǎng)絡(luò)緩存。
void setCookieJar(QNetworkCookieJar *cookieJar)設(shè)置用于管理HTTP cookie的QNetworkCookieJar。
QNetworkCookieJar *cookieJar() const獲取當(dāng)前的HTTP cookie管理器。

這些函數(shù)提供了QNetworkAccessManager的核心功能,使得開發(fā)者能夠方便地進(jìn)行各種類型的網(wǎng)絡(luò)請求,配置網(wǎng)絡(luò)參數(shù),并進(jìn)行相關(guān)的網(wǎng)絡(luò)管理操作。

1.2QNetworkReply

以下是QNetworkReply類中的一些常用函數(shù)及其描述:

函數(shù)描述
QByteArray readAll() const讀取所有可用的數(shù)據(jù),并返回一個QByteArray,包含從網(wǎng)絡(luò)回復(fù)讀取的所有內(nèi)容。
QByteArray peek(int maxSize) const查看最多maxSize字節(jié)的可用數(shù)據(jù),但不從緩沖區(qū)中移除。
QByteArray read(int maxSize)從網(wǎng)絡(luò)回復(fù)中讀取最多maxSize字節(jié)的數(shù)據(jù),并將其從緩沖區(qū)中移除。
QByteArray readLine(int maxSize = 0)從網(wǎng)絡(luò)回復(fù)中讀取一行數(shù)據(jù),最多包含maxSize字節(jié),并將其從緩沖區(qū)中移除。
void ignoreSslErrors(const QList<QSslError> &errors = QList<QSslError>())忽略SSL錯誤,繼續(xù)處理網(wǎng)絡(luò)回復(fù)。
void abort()終止網(wǎng)絡(luò)回復(fù)的處理,關(guān)閉底層連接。
void close()關(guān)閉網(wǎng)絡(luò)回復(fù)的處理。
QUrl url() const返回與網(wǎng)絡(luò)回復(fù)相關(guān)聯(lián)的URL。
QNetworkRequest request() const返回生成此網(wǎng)絡(luò)回復(fù)的網(wǎng)絡(luò)請求。
QNetworkAccessManager *manager() const返回與網(wǎng)絡(luò)回復(fù)相關(guān)聯(lián)的QNetworkAccessManager。
bool isFinished() const檢查網(wǎng)絡(luò)回復(fù)是否已完成。
QNetworkReply::NetworkError error() const返回網(wǎng)絡(luò)回復(fù)的錯誤代碼。
bool hasRawHeader(const QByteArray &headerName) const檢查網(wǎng)絡(luò)回復(fù)是否包含指定原始頭。
QList<QByteArray> rawHeaderList() const返回網(wǎng)絡(luò)回復(fù)的所有原始頭的列表。
QByteArray rawHeader(const QByteArray &headerName) const返回指定原始頭的值。
QVariant header(QNetworkRequest::KnownHeaders header) const返回指定標(biāo)準(zhǔn)頭的值。
QList<QByteArray> rawHeaderValues(const QByteArray &headerName) const返回指定原始頭的所有值。
QVariant attribute(QNetworkRequest::Attribute code) const返回指定網(wǎng)絡(luò)請求屬性的值。
QIODevice *readAllStandardOutput()讀取標(biāo)準(zhǔn)輸出的所有數(shù)據(jù),并返回一個QIODevice,用于訪問讀取的內(nèi)容。
QIODevice *readAllStandardError()讀取標(biāo)準(zhǔn)錯誤的所有數(shù)據(jù),并返回一個QIODevice,用于訪問讀取的內(nèi)容。
bool isReadable() const檢查網(wǎng)絡(luò)回復(fù)是否可讀取。

這些函數(shù)提供了對QNetworkReply實例進(jìn)行各種操作和查詢的方法,包括讀取回復(fù)數(shù)據(jù)、處理SSL錯誤、獲取請求信息、檢查錯誤狀態(tài)等。開發(fā)者可以根據(jù)具體需求使用這些函數(shù)來有效地與網(wǎng)絡(luò)回復(fù)進(jìn)行交互。

1.3QNetworkRequest

以下是QNetworkRequest類中的一些常用函數(shù)及其描述:

函數(shù)描述
QNetworkRequest(const QUrl &url)使用給定的URL構(gòu)造一個QNetworkRequest實例。
void setUrl(const QUrl &url)設(shè)置QNetworkRequest的URL。
QUrl url() const返回與QNetworkRequest相關(guān)聯(lián)的URL。
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)設(shè)置指定原始頭的值。
QByteArray rawHeader(const QByteArray &headerName) const返回指定原始頭的值。
bool hasRawHeader(const QByteArray &headerName) const檢查QNetworkRequest是否包含指定原始頭。
void setRawHeaderList(const QList<QByteArray> &headerList)設(shè)置所有原始頭的列表。
QList<QByteArray> rawHeaderList() const返回QNetworkRequest的所有原始頭的列表。
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)設(shè)置指定標(biāo)準(zhǔn)頭的值。
QVariant header(QNetworkRequest::KnownHeaders header) const返回指定標(biāo)準(zhǔn)頭的值。
void setAttribute(QNetworkRequest::Attribute code, const QVariant &value)設(shè)置指定網(wǎng)絡(luò)請求屬性的值。
QVariant attribute(QNetworkRequest::Attribute code) const返回指定網(wǎng)絡(luò)請求屬性的值。
void setSslConfiguration(const QSslConfiguration &config)設(shè)置SSL配置。
QSslConfiguration sslConfiguration() const返回SSL配置。
void setMaximumRedirectsAllowed(int maxRedirects)設(shè)置允許的最大重定向次數(shù)。
int maximumRedirectsAllowed() const返回允許的最大重定向次數(shù)。
void setOriginatingObject(QObject *object)設(shè)置發(fā)起此網(wǎng)絡(luò)請求的對象。
QObject *originatingObject() const返回發(fā)起此網(wǎng)絡(luò)請求的對象。
bool isEmpty() const檢查QNetworkRequest是否為空(未設(shè)置URL)。

這些函數(shù)提供了對QNetworkRequest實例進(jìn)行各種操作和查詢的方法,包括設(shè)置和獲取頭信息、設(shè)置SSL配置、設(shè)置和獲取網(wǎng)絡(luò)請求屬性等。開發(fā)者可以根據(jù)具體需求使用這些函數(shù)來有效地構(gòu)建和管理網(wǎng)絡(luò)請求。

2.實現(xiàn)Web頁面訪問

要使用該模塊讀者應(yīng)該在*.pro文件內(nèi)包含network網(wǎng)絡(luò)模塊,并在頭文件中引入QNetworkAccessManagerQNetworkReply、QNetworkRequest三個類,在建立訪問時首先使用QNetworkAccessManager新增一個manager管理類,并通過QNetworkRequest類創(chuàng)建一個GET請求地址,通過使用manager.get方法實現(xiàn)對特定頁面的訪問。

當(dāng)訪問完成時需要通過一個信號來實現(xiàn)對數(shù)據(jù)的處理,在QNetworkReply類中包含有如下表所示的信號以供讀者使用,例如當(dāng)訪問被完成時則自動觸發(fā)&QNetworkReply::finished完成信號,此時只需要對該信號進(jìn)行相應(yīng)的處理即可,通常會使用一個槽函數(shù)來處理它。

信號描述
finished()當(dāng)網(wǎng)絡(luò)請求完成時發(fā)出。
downloadProgress(qint64, qint64)在下載過程中定期發(fā)出,提供下載進(jìn)度信息。參數(shù)為已下載的字節(jié)數(shù)和總字節(jié)數(shù)。
uploadProgress(qint64, qint64)在上傳過程中定期發(fā)出,提供上傳進(jìn)度信息。參數(shù)為已上傳的字節(jié)數(shù)和總字節(jié)數(shù)。
readyRead()當(dāng)有可讀取的數(shù)據(jù)時發(fā)出,用于通知應(yīng)用程序可以調(diào)用readAll()或read()方法以獲取更多數(shù)據(jù)。
error(QNetworkReply::NetworkError)當(dāng)網(wǎng)絡(luò)請求發(fā)生錯誤時發(fā)出,參數(shù)為錯誤代碼。
sslErrors(const QList<QSslError> &)當(dāng)SSL錯誤發(fā)生時發(fā)出,參數(shù)為SSL錯誤的列表。

這些信號提供了豐富的信息,使開發(fā)者能夠在不同階段處理網(wǎng)絡(luò)請求。同理,在下載和上傳過程中可以使用downloadProgressuploadProgress信號來獲取進(jìn)度信息,readyRead信號表示有可讀取的數(shù)據(jù),error信號表示請求發(fā)生錯誤,sslErrors信號表示SSL相關(guān)的錯誤。

當(dāng)信號被觸發(fā)時則會通過QObject::connect連接到對應(yīng)的槽函數(shù)上,如下案例中所示,在槽函數(shù)內(nèi)通過reply->attribute方法我們獲取到此次響應(yīng)碼中的QNetworkRequest::HttpStatusCodeAttribute屬性,該屬性用來指明本次訪問的狀態(tài)值。此類屬性也有許多可供參考,如下所示;

屬性描述
QNetworkRequest::HttpStatusCodeAttributeHTTP響應(yīng)的狀態(tài)碼。
QNetworkRequest::HttpReasonPhraseAttributeHTTP響應(yīng)的原因短語,如"OK"、"Not Found"等。
QNetworkRequest::RedirectionTargetAttribute重定向目標(biāo)的URL。
QNetworkRequest::ConnectionEncryptedAttribute連接是否加密的標(biāo)志,返回一個bool值。
QNetworkRequest::SourceIsFromCacheAttribute請求是否來自緩存的標(biāo)志,返回一個bool值。
QNetworkRequest::HttpPipeliningAllowedAttribute是否允許HTTP流水線傳輸?shù)臉?biāo)志,返回一個bool值。
QNetworkRequest::HttpPipeliningWasUsedAttribute是否使用了HTTP流水線傳輸?shù)臉?biāo)志,返回一個bool值。
QNetworkRequest::CustomVerbAttribute自定義請求動作(HTTP verb)的字符串。
QNetworkRequest::User用戶自定義的屬性,用于存儲任意類型的用戶數(shù)據(jù)。

這些屬性提供了額外的信息,使得開發(fā)者能夠更全面地了解和處理網(wǎng)絡(luò)響應(yīng)。根據(jù)具體的應(yīng)用需求,開發(fā)者可以選擇使用這些屬性中的一個或多個來獲取所需的信息。

#include <QCoreApplication>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 創(chuàng)建網(wǎng)絡(luò)訪問管理器
    QNetworkAccessManager manager;

    // 創(chuàng)建GET請求
    QNetworkRequest request(QUrl("http://www.baidu.com"));

    // 發(fā)送GET請求
    QNetworkReply *reply = manager.get(request);

    // 連接信號槽,處理響應(yīng)
    QObject::connect(reply, &QNetworkReply::finished, [&]()
    {
        if (reply->error() == QNetworkReply::NoError)
        {
            // 獲取請求的 URL
            qDebug() << "Request URL:" << reply->request().url();

            // 輸出請求頭信息
            qDebug() << "Request Headers:";
            QList<QByteArray> requestHeaders = reply->request().rawHeaderList();
            foreach (const QByteArray &header, requestHeaders) {
                qDebug() << header << ":" << reply->request().rawHeader(header);
            }

            // 獲取響應(yīng)碼
            int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
            qDebug() << "HttpStatusCodeAttribute:" << statusCode;

            // 連接是否加密的標(biāo)志
            bool connectionEncryptedAttribute = reply->attribute(QNetworkRequest::ConnectionEncryptedAttribute).toBool();
            qDebug() << "ConnectionEncryptedAttribute:" << connectionEncryptedAttribute;

            // 請求是否來自緩存的標(biāo)志
            bool sourceIsFromCacheAttribute = reply->attribute(QNetworkRequest::SourceIsFromCacheAttribute).toBool();
            qDebug() << "SourceIsFromCacheAttribute:" << sourceIsFromCacheAttribute;

            // HTTP請求是否被允許進(jìn)行流水線處理的標(biāo)志
            bool httpPipeliningAllowedAttribute = reply->attribute(QNetworkRequest::HttpPipeliningAllowedAttribute).toBool();
            qDebug() << "HttpPipeliningAllowedAttribute:" << httpPipeliningAllowedAttribute;

            // 輸出響應(yīng)頭信息
            qDebug() << "Response Headers:";
            QList<QByteArray> responseHeaders = reply->rawHeaderList();
            foreach (const QByteArray &header, responseHeaders) {
                qDebug() << header << ":" << reply->rawHeader(header);
            }

            // 處理響應(yīng)內(nèi)容,這里可以使用 readAll() 方法獲取響應(yīng)內(nèi)容
            // qDebug() << "Response Content:" << reply->readAll();
        } else
        {
            qDebug() << "Error:" << reply->errorString();
        }

        // 釋放資源
        reply->deleteLater();
        QCoreApplication::quit();
    });

    return a.exec();
}

讀者可自行編譯并運行這段代碼,觀察請求與相應(yīng)數(shù)據(jù)如下圖所示;

至于如何在圖形界面中使用則就更簡單了,首先我們在mainwindow.h頭文件中定義好所需要的兩個槽函數(shù),函數(shù)on_finished()用于在完成請求后被調(diào)用,函數(shù)on_readyRead()則用于在回調(diào)被執(zhí)行后調(diào)用,并并以兩個網(wǎng)絡(luò)管理類的指針變量,如下所示;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    //自定義槽函數(shù)
    void on_finished();
    void on_readyRead();

    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    QNetworkAccessManager networkManager;   // 網(wǎng)絡(luò)管理
    QNetworkReply *reply;                   // 網(wǎng)絡(luò)響應(yīng)
};

當(dāng)獲取按鈕被點擊后則開始執(zhí)行讀入指定URL地址,并對該地址進(jìn)行網(wǎng)頁訪問,同時綁定這兩個信號,一旦被觸發(fā)則自動路由到對應(yīng)的槽函數(shù)上面去,如下所示;

void MainWindow::on_pushButton_clicked()
{
    // 讀入URL地址
    QString urlSpec = ui->lineEdit->text().trimmed();
    if (urlSpec.isEmpty())
    {
        QMessageBox::information(this, "錯誤", "請指定URL");
        return;
    }

    // 格式化URL
    QUrl newUrl = QUrl::fromUserInput(urlSpec);
    if (!newUrl.isValid())
    {
        QMessageBox::information(this, "錯誤", QString("無效URL: %1").arg(urlSpec));
        return;
    }

    // 訪問頁面
    reply = networkManager.get(QNetworkRequest(newUrl));

    // 完成時的槽函數(shù)綁定
    connect(reply, SIGNAL(finished()), this, SLOT(on_finished()));

    // 讀入數(shù)據(jù)的槽函數(shù)綁定
    connect(reply, SIGNAL(readyRead()), this, SLOT(on_readyRead()));

}

相對應(yīng)的,在on_finished()槽函數(shù)中我們將響應(yīng)頭讀出并輸出到文本框中,在on_readyRead()槽函數(shù)中則是對整個網(wǎng)站頁面源代碼的輸出功能,完整代碼如下所示;

void MainWindow::on_finished()
{
    // 獲取響應(yīng)碼
    int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();

    if(statusCode == 200)
    {
        ui->plainTextEdit_2->appendPlainText("響應(yīng)頭數(shù)據(jù):");
        // 輸出響應(yīng)頭信息
        QList<QByteArray> responseHeaders = reply->rawHeaderList();
        foreach (const QByteArray &header, responseHeaders)
        {
            ui->plainTextEdit_2->appendPlainText(header + " : " + reply->rawHeader(header));
        }
    }
}

// 讀入頁面源代碼
void MainWindow::on_readyRead()
{
    ui->plainTextEdit->setPlainText(reply->readAll());
}

運行代碼,讀者可自行輸入特定的網(wǎng)站進(jìn)行讀取測試,如下所示(完整代碼請參考課件部分);

以上就是C++ Qt開發(fā)之使用QNetworkAccessManager實現(xiàn)Web網(wǎng)頁訪問的詳細(xì)內(nèi)容,更多關(guān)于Qt QNetworkAccessManager的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言環(huán)形鏈表如何檢測詳解

    C語言環(huán)形鏈表如何檢測詳解

    這篇文章主要介紹了C語言環(huán)形鏈表如何檢測,環(huán)形鏈表是指鏈表的尾節(jié)點指向鏈表中的某個節(jié)點,從而形成一個環(huán),判斷鏈表中是否存在環(huán)是許多算法問題的基礎(chǔ),也是面試中常見的考點,需要的朋友可以參考下
    2025-05-05
  • C++深入探究list的模擬實現(xiàn)

    C++深入探究list的模擬實現(xiàn)

    list相較于vector來說會顯得復(fù)雜,它的好處是在任意位置插入,刪除都是一個O(1)的時間復(fù)雜度,本文主要介紹了C++中List的模擬實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 在C語言中比較兩個字符串是否相等的方法

    在C語言中比較兩個字符串是否相等的方法

    這篇文章主要介紹了在C語言中比較兩個字符串是否相等的方法,分別介紹了strcmp()函數(shù)和strcasecmp()函數(shù),注意功能區(qū)分,需要的朋友可以參考下
    2015-08-08
  • vscode刷acm、leetcode的題目

    vscode刷acm、leetcode的題目

    vscode是一款越來越受碼農(nóng)們喜愛的軟件,大多數(shù)人學(xué)習(xí)編程繞不開的一部分就是算法,很多人都喜歡刷LeetCode的題目,本文就來介紹一下
    2021-06-06
  • c語言snprintf函數(shù)的用法詳解

    c語言snprintf函數(shù)的用法詳解

    這篇文章主要給大家介紹了關(guān)于c語言snprintf函數(shù)用法的相關(guān)資料,snprintf()函數(shù)用于將格式化的數(shù)據(jù)寫入字符串,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • 單元測試代碼覆蓋率解析

    單元測試代碼覆蓋率解析

    單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。動態(tài)分析就是通過觀察軟件運行時的動作,來提供執(zhí)行跟蹤,時間分析,以及測試覆蓋度方面的信息。下面我們來詳細(xì)了解下吧
    2019-06-06
  • 聊聊C++的mutable和volatile

    聊聊C++的mutable和volatile

    這篇文章主要介紹了C++的mutable和volatile的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-09-09
  • Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)通用數(shù)據(jù)庫分頁

    Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)通用數(shù)據(jù)庫分頁

    數(shù)據(jù)庫分頁展示,在所有的涉及到數(shù)據(jù)庫記錄的項目中都是需要的。本文將利用Qt實現(xiàn)通用數(shù)據(jù)庫的分頁展示,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-02-02
  • C++中inline函數(shù)詳解

    C++中inline函數(shù)詳解

    inline函數(shù)的定義:在函數(shù)聲明或定義中函數(shù)返回類型前加上關(guān)鍵字inline,即可以把函數(shù)指定為內(nèi)聯(lián)函數(shù)。inline函數(shù)對編譯器而言必須是可見的,以便它能夠在調(diào)用點展開該函數(shù)。
    2015-07-07
  • MFC中exe圖標(biāo)修改的方法

    MFC中exe圖標(biāo)修改的方法

    修改窗口標(biāo)題圖標(biāo)可通過導(dǎo)入圖標(biāo),然后在CMainFrame.:OnCreate函數(shù)中加載圖標(biāo)即可, 代碼如下:
    2013-04-04

最新評論

永修县| 吉首市| 兴国县| 景宁| 博爱县| 宁波市| 华宁县| 育儿| 扬州市| 神农架林区| 淮阳县| 海南省| 商南县| 中西区| 顺平县| 彩票| 平谷区| 深州市| 松阳县| 苍南县| 朝阳市| 平定县| 淮滨县| 淄博市| 邵武市| 金山区| 张家口市| 岳池县| 嘉鱼县| 常山县| 枣强县| 嘉祥县| 镇康县| 随州市| 巩留县| 龙州县| 宜君县| 分宜县| 平谷区| 庆元县| 上饶市|