gpt4 book ai didi

file - http页面未完全下载QT

转载 作者:可可西里 更新时间:2023-11-01 16:21:59 26 4
gpt4 key购买 nike

你好,我写了一个程序,可以下载网页并将其保存为文件。它做到了,但只是部分做到了。有人遇到过这样的问题吗?

mainwindow.cpp源文件:



#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(这个);
netManager = new QNetworkAccessManager;
setFile("我的页面");
}

主窗口::~主窗口()
{
netManager->deleteLater();
删除用户界面;
}

void MainWindow::setFile(QString fileURL)
{
QString 保存路径;

savePath = QString("D:/page.html");

QNetworkRequest请求;
request.setUrl(QUrl(fileURL));
reply = netManager->get(request);

文件=新QFile;
文件->设置文件名(保存路径);
文件->打开(QIODevice::WriteOnly);

连接(回复,SIGNAL(downloadProgress(qint64,qint64)),这个,SLOT(onProgress(qint64,qint64)));
connect(netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));
连接(回复,SIGNAL(readyRead()),这个,SLOT(onReadyRead()));
连接(回复,SIGNAL(完成()),这个,SLOT(onReplyFinished()));
}

void MainWindow::onProgress(qint64 bRead, qint64 bTotal)
{
qDebug(QString::number(bRead).toLatin1() + "- "+ QString::number(bTotal).toLatin1());
}

void MainWindow::onFinished(QNetworkReply *reply)
{
切换(回复->错误())
{
案例 QNetworkReply::NoError:
{
qDebug("文件已下载");
qDebug() << 文件->大小();
}休息;
默认:
{
qDebug(回复->errorString().toLatin1());
}
}
如果(文件->isOpen())
{
文件->关闭();
文件->deleteLater();
}
}

void MainWindow::onReadyRead()
{
file->write(reply->readAll());
}

void MainWindow::onReplyFinished()
{
如果(文件->isOpen())
{
文件->关闭();
文件->deleteLater();
}
}

mainwindow.h 头文件源码:



#ifndef MAINWINDOW_H
#define 主窗口_H

#include
#include
#include
#include
#include
#include

命名空间 Ui
{
类主窗口;
}

主窗口类:公共(public) QMainWindow
{
Q_OBJECT

民众:
显式 MainWindow(QWidget *parent = 0);
〜主窗口();
void setFile(QString fileURL);
私有(private)插槽:
void onFinished(QNetworkReply *);
void onProgress(qint64 bRead,qint64 bTotal);
void onReadyRead();
void onReplyFinished();
私有(private)的:
用户界面::主窗口*用户界面;
QNetworkAccessManager *网络管理器;
QNetworkReply *回复;
QFile *文件;
};

#endif//主窗口_H

我试图自己解决这个问题,但在多次尝试后我都失败了。我是 QT 的初学者,所以很可能我在某个地方犯了错误,但我什至没有看到它。任何人都可以引导我找到解决问题的正确方法吗?

最佳答案

你应该把这个:

connect(netManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onFinished(QNetworkReply*)));

之前:

reply = netManager->get(request);

修改后工作正常;)

关于file - http页面未完全下载QT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16903156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com