QtConcurrent с UI. Как подключиться?
У меня есть статический класс:
class NetworkTools {
public:
static QMap<QString, QString>* getMbNames(const QString &html)
{
...
return result;
}
static QString download(const QUrl &url)
{
...
return result;
};
};
И имею MainWindow с функцией при нажатии кнопки:
void MainWindow::on_updateSiteInfoBtn_clicked()
{
ui->updateSiteInfoBtn->setEnabled(false);
const QUrl productUrl("***");
auto future = QtConcurrent::run(&NetworkTools::download, productUrl)
.then(QtFuture::Launch::Async, &NetworkTools::getMbNames);
.then(QtFuture::Launch::Sync, [=] {emit MainWindow::MakeMbListSignal(true);})
//.then(QtFuture::Launch::Sync, &MainWindow::MakeMbList, true);
}
Как вы можете видеть, я хочу добавить значения из getMbNames в Combobox в MainWindow (ui->siteInfoCmb
). После этого я хочу отправить сигнал в MainWindow MakeMbListSignal или выполнить MakeMbList:
void MainWindow::MakeMbList(bool isSuccess)
{
ui->siteInfoCmb->model()->sort(0);
ui->siteInfoCmb->setCurrentIndex(0);
ui->updateSiteInfoBtn->setVisible(!isSuccess);
ui->siteInfoCmb->setVisible(isSuccess);
}
Как мне это реализовать?
Источник: Stack Overflow на русском