我发现QSignalMapper
可以不带任何参数地处理SIGNAL
,但是如何处理带有参数的SIGNAL
。
实际的问题是,我动态创建了一些QProgressBar
,并且我想使用QNetworkReply
的downloadProgress(qint64, qint64)
更新栏,然后出现了问题。
最佳答案
问题是QNetworkReply's downloadProgress(qint64, qint64)
和QProgressBar
的插槽在任何方面都不兼容。在这种情况下,信号映射器将无济于事,这太具体了。
您必须拥有自己的适配器类:
class Adapter: public QObject
{
Q_OBJECT
public:
explicit Adapter(QProgressBar* bar, const QNetworkReply* reply):QObject(bar)
{
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(changeProgress(qint64,qint64)));
}
private slots:
void changeProgress(qint64 progress, qint64 total)
{
QProgressBar* bar = static_cast<QProgressBar*>(parent());
bar->setMaximum(total);
bar->setValue(progress);
}
};
关于c++ - 如何处理QT中动态添加的QObject的SIGNAL(带有参数)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9452223/