Я пытаюсь закодировать функцию автосохранения, которая запускает поток, который каждый период времени запускает функцию автосохранения, но при объявлении ее в mainwindow.h выдает ошибку «AutoSaveThread не называет тип, который вы имели в виду« создать поток » "
код, где происходит ошибка
AutoSaveThread as;
класс, который должен называться
`class AutoSaveThread:public QThread{
Q_OBJECT
public:
bool active;
protected:
void run();
private:
int saveTimer=10;
signals:
void autoS();
};`
функция автосохранения
void MainWindow::autosave()
{
int numOfPoints=0;
QJsonObject imagesJsonObject;
QJsonArray shapeJsonArray;
QJsonObject shapeJsonObject;
QJsonArray coodJsonArray;
QJsonObject pointJsonObject;
QJsonObject coorJsonObject;
QString initialPath = QDir::currentPath() + "/autosave.json";
QFile jsonFile(initialPath);
jsonFile.open(QFile::WriteOnly);
imagesJsonObject.insert("file_Name",map->filename);
for(int i=0;i<shapes.size();i++)
{
numOfPoints=shapes[i].count();
for(int j=0;j<numOfPoints;j++)
{
pointJsonObject.insert("x",shapes[i][j].x());
pointJsonObject.insert("y",shapes[i][j].y());
coodJsonArray.append(pointJsonObject);
}
coorJsonObject.insert("coordinates",coodJsonArray);
for(int j=0;j<numOfPoints;j++)
{
coodJsonArray.removeFirst();
}
shapeJsonObject.insert("annotation",0);//to do assign annotation when annotation linked to shape
shapeJsonArray.append(shapeJsonObject);
shapeJsonArray.append(coorJsonObject);
}
imagesJsonObject.insert("shapes",shapeJsonArray);
QJsonDocument jsonDoc(imagesJsonObject);
jsonFile.write(jsonDoc.toJson());
jsonFile.close();
}
функция запуска
void AutoSaveThread::run()
{
while(true)
{
std::this_thread::sleep_for(std::chrono::seconds(saveTimer));
//h.autosave(); ("h" is mainwindow however not only does it cause the diamond effect (because passing autosave to mainwindow but also passing mainwindow to autosave)(also you cant pass parent to child)
qDebug()<<"autosaved";
}
}