Передача параметров сигнала в лямбду

227
19 октября 2018, 23:30

Имеем в наличии такой коннект

connect(
   task->get_reply(), 
   SIGNAL(downloadProgress(qint64, qint64)), 
   task, 
   SLOT(on_progress(qint64, qint64))
);

Каким образом его переписать, чтобы вместо слота была лямбда, принимающая два параметра сигнала (основной вопрос как эти параметры захватить)

connect(
   task->get_reply(), 
   &QNetworkReply::downloadProgress, 
   [=](???){ task->on_progress(???); }
);
Answer 1
connect(task->get_reply(), &QNetworkReply::downloadProgress,
    [=](qint64 first_arg, qint64 second_arg){
        task->on_progress(first_arg, second_arg);
    });
int external_state = 0;
connect(task->get_reply(), &QNetworkReply::downloadProgress,
    [&external_state](qint64 first_arg, qint64 second_arg){
        task->on_progress(first_arg, second_arg);
    });
connect(task->get_reply(), &QNetworkReply::downloadProgress,
    [=](qint64&& first_arg, qint64& second_arg){
        task->on_progress(std::move(first_arg), second_arg);
    });
READ ALSO
Проблема с отрисовкой .png файла

Проблема с отрисовкой .png файла

Нужно отрисовать картинку, которая должна быть любой высоты и ширины, проблема в том, что если я отрисовываю ее по такому принципу -- Ширина...

195
Java использование Properties глобально

Java использование Properties глобально

Как правильно использовать javautil

232
Java выполнение повторяющихся заданий

Java выполнение повторяющихся заданий

Есть сервис, который надо запускать периодическиКак лучше реализовать периодическое выполнение задания на джаве? Какие "за" и "против" использования...

193
Как создать объект типа T

Как создать объект типа T

У меня есть метод с параметром

224