Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QProgressbar和QNetworkReply信号 我用QT框架编写C++应用程序。 它应该通过http下载一个文件,并用QProgressbar显示下载进度-但我没有让这部分工作_C++_Qt_Networking_Qt4 - Fatal编程技术网

QProgressbar和QNetworkReply信号 我用QT框架编写C++应用程序。 它应该通过http下载一个文件,并用QProgressbar显示下载进度-但我没有让这部分工作

QProgressbar和QNetworkReply信号 我用QT框架编写C++应用程序。 它应该通过http下载一个文件,并用QProgressbar显示下载进度-但我没有让这部分工作,c++,qt,networking,qt4,C++,Qt,Networking,Qt4,示例代码: 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))); 如果运行代码

示例代码:

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)
但是说:

此信号适用于连接到QProgressBar::setValue()以更新提供用户反馈的QProgressBar

我的代码出了什么问题?如何使其工作? 我正在Linux下运行Qt4.5.3


谢谢你的帮助,对不起我的英语

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

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

因此,我建议:

connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
我希望它能帮助你


更多信息:

是的,没错,您必须在信号/插槽方法中设置匹配参数。。。无论如何,在Qt示例和演示中,您可以在示例“FTP客户端”中找到以下代码:

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

因此,我建议:

connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
我希望它能帮助你


更多信息:

我引用文档:

例外情况下,如果信号具有更多 参数,而不是它所在的插槽 连接到,附加的 只需忽略以下参数:


在您的案例中,问题实际上是参数类型自qint64以来不匹配!=int,没有包装器或类型转换就不可能完成任务。

我引用文档:

例外情况下,如果信号具有更多 参数,而不是它所在的插槽 连接到,附加的 只需忽略以下参数:


在您的案例中,问题实际上是参数类型自qint64以来不匹配!=int,没有包装器或类型转换就不可能完成任务。

嘿,谢谢你的回答!它应该这样工作,但我认为它不像没有“连接器”的解决方案那样“性感”。也许这是不可能的/既然他们也在用这种方式,我认为这是不可能的,至少目前是这样!很高兴它帮了你…嘿,谢谢你的回答!它应该这样工作,但我认为它不像没有“连接器”的解决方案那样“性感”。也许这是不可能的/既然他们也在用这种方式,我认为这是不可能的,至少目前是这样!很高兴它帮助了你。。。
connect(downloader, SIGNAL(downloadProgress(qint64,qint64)), pbar, SLOT(updateDataTransferProgress(qint64,qint64)));
connect(ftp,
SIGNAL(rawCommandReply(int, const
QString &)),
        this, SLOT(checkErrorCode(int)));