Всем привет.
Вопрос больше на тему красоты кода.
Есть сущность "документ", содержащая данные. Документ может быть загружен с диска и сохранен:
class Document : public QObject {
Q_OBJECT
public:
Document();
void Save(QString filename);
static Document* Load(QString filename);
};
Пришло время вынести загрузку и сохранение в отдельный поток, а из потока посылать сигналы о прогрессе операции. Но так как метод Load статический, то этого не сделать.
Как в таком случае лучше поступить?
Есть вариант сделать так:
Document::Load(QString) {
Document* d = new Document();
d->startLoadingInThread();
return d;
}
, но тогда есть шанс, что загрузка выполнится раньше, чем основной поток успеет подписаться на сигнал об окончании загрузки.
Убирать статик с Load не хочется потому что, как мне кажется, метод Load должен создавать новый документ, а не изменять существующий.
Кто что посоветует?