при выполнении длительной операции. Есть функция (загрузка и обработка файла). Внутри этой функции цикл с обновлением процента выполнения. На данный момент я делаю так:
// Model.cpp
...
void processFile(..., const function<void (const int& percent)>& updateProgress) {
for (...) {
updateProgress(percent);
...
}
}
...
// MainWindow.h
...
signals:
void updateProgress(int percent) const;
...
// MainWindow.cpp
...
connect(Model, &Model::updateProgress, this, [this](const int& percent) {
progressBar->setValue(percent);
});
...
processFile(..., [this](const int& percent) {
emit updateProgress(percent);
})Есть более оптимальный и наглядный вариант?
оптимальнее вам врядли потребуется учитывая рамки вашей программы. можно добавить уровень бстракции но ввиду потребности в масштабировании вам лучше остановиться на вашем варианте
это так себе решение же. Если в мейнвиндоу все равно известна модель, почему бы не эмитить из этого processFIle напрямую сигнал модели, а в мейнвиндоу его слушать. Зачем эти лишние функции городить
Обсуждают сегодня