...в конструкторе потока передавать ему ссылку на QMainWindow (т.е. this), а в функции run в потоке вызывать через этот указатель ту самую функцию считывания?
Нет, так делать нельзя. Из другого потока нельзя обращаться в GUI напрямую. Читайте данные в run() вашего потока и передавайте из при помощи технологии "сигнал-слот" или при помощи custom event.
Я думаю человек имеет ввиду следующую конструкцию:
C++ (Qt)
void MainWindow::readChunk()
{
file.read(...);
}
и дергать эту функцию из второго потока. В принципе, если не использовать в ней функции связанные с GUI, такое возможно.
Только, с точки зрения архитектуры системы, мне не понятно на каком основании
объект главного окна будет что-то читать? Главное окно должно рисовать и обрабатывать действия пользователя.
Может сделать отдельный класс-контейнер, который под защитой мутексов, будет читать данные, предоставлять прочитанные данные и делать все с этим связанное?