а использование pthread чем то обосновано или можно использовать QThread? Да, асинхронно. это определяется при соединении в QObject::connect(). можно выбрать в контексте какого потока будет выполнен слот.
У объекта, который обновляет данные делается сигнал с новыми данными. У MainWindow делается слот принимающий эти данные и отображающий их. после этого и только нужно соединить через QObject::connect()
В str вернется полный путь до выбраного файла. Если из него нужны только определенные части(например только путь без имени) можно использовать QFileInfo.
Либо по другому на верхней панели под кнопками меню выбрать тип группировки для cenrtalWidget. Он сам по сути layout, просто у тебя не выбран тип для него
dll - Динамическая библиотека, собственно что и получается из её названия.
В статической сборке вместо dll будут другие файлы. например .lib или .o в зависимости от компилятора. Вот они будут собираться внутрь exe файла
Пример