QtConcurrent с UI. Как подключиться?

Рейтинг: 0Ответов: 0Опубликовано: 12.03.2023

У меня есть статический класс:

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);
}

Как мне это реализовать?

Ответы

Ответов пока нет.