I think the code is not really thread safe which could cause random crashes which might be hard to reproduce.
this->synth.set_progress_function([this](double percent) {
int p = (int) percent;
this->ui->statusBar->showMessage(QString::number(p) + "%");
});
The problem here is that the progress function will probably be called from the loader thread. The statusBar object however lives in the Qt main thread. So accessing it directly could cause crashes.
I've seen that other code you use emits a signal and accesses the ui widgets in the signal handler. If I understand the Qt documentation directly, this should avoid this type of problem, because a queue will be used to handle the signal in the Qt main thread.