gpt4 book ai didi

c++ - QProgressbar 和 QNetworkReply 信号

转载 作者:行者123 更新时间:2023-11-27 22:31:22 25 4
gpt4 key购买 nike

我正在使用 Qt 框架用 C++ 编写应用程序。它应该通过 http 下载文件并使用 QProgressbar 显示下载进度 - 但我没有让那部分工作!

示例代码:

QProgressBar* pbar = new QProgressBar();
//calls the website and returns the QNetworkReply*
QNetworkReply* downloader = Downloader->getFile();

connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(setValue(int)));

如果我运行我的代码,会出现以下错误:

QObject::connect: Incompatible sender/receiver arguments
QNetworkReplyImpl::downloadProgress(qint64,qint64) --> QProgressBar::setValue(int)

但是the Qt docs for QNetworkReply说:

This signal is suitable to connecting to QProgressBar::setValue() to update the QProgressBar that provides user feedback.

我的代码有什么问题,我该如何让它工作?我在 Linux 下运行 Qt 4.5.3。

感谢您的帮助,抱歉我的英语不好!

最佳答案

是的,是的,你必须在你的 SIGNAL/SLOT 方法中设置匹配的参数......无论如何,在 Qt 示例和演示中,你可以在示例“FTP 客户端”中找到以下代码:

connect(ftp, SIGNAL(dataTransferProgress(qint64, qint64)), this, SLOT(updateDataTransferProgress(qint64, qint64)));

...

void FtpWindow::updateDataTransferProgress(qint64 readBytes, qint64 totalBytes)
{
progressDialog->setMaximum(totalBytes);
progressDialog->setValue(readBytes);
}

您可以复制该部分并以这种方式更新您的进度条...

因此我建议:

connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));

希望对你有帮助!

更多信息:http://qt.nokia.com/doc/4.6/network-qftp.html

关于c++ - QProgressbar 和 QNetworkReply 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2077303/

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