В следующем коде:
connect(manager, SIGNAL(finished(QNetworkReply*)), this, slot);
Вы указываете, что слот принадлежит этому, то есть он принадлежит Request, но слот принадлежит MainWindow, поэтому решение состоит в том, чтобы передать получателя в качестве параметра:
request.h
...
void make_request(const QUrl & url, QObject *receiver, const char *slot);
...
request.cpp
void Request::make_request(const QUrl url, QObject *receiver, const char* slot)
{
QNetworkAccessManager* manager = new QNetworkAccessManager();
connect(manager, SIGNAL(finished(QNetworkReply*)), receiver, slot);
manager->get(QNetworkRequest(url));
}
и
request.make_request(QUrl("{ApiUrl}"), this, SLOT(parse_trending(QNetworkReply*)));
другой вариант с использованием std::function
(#include <functional>
):
void Request::make_request(const QUrl & url, std::function<void (QNetworkReply *)> slot)
{
QNetworkAccessManager* manager = new QNetworkAccessManager();
connect(manager, &QNetworkAccessManager::finished, slot);
manager->get(QNetworkRequest(url));
}
request.make_request(QUrl("{ApiUrl}"), std::bind(&MainWindow::parse_trending, this, std::placeholders::_1));