Я пытаюсь получить поток для вызова функции testing()
за mainwindow.cpp
когда-либо X количество секунд.
Я реализовал класс с именем AutoSaveThread
.
Файл заголовка выглядит следующим образом:
#ifndef AUTOSAVETHREAD_H
#define AUTOSAVETHREAD_H
#include <QtCore>
#include <unistd.h>
class AutoSaveThread : public QThread
{
public:
AutoSaveThread(QObject*);
void run();
signals:
void callTest();
};
#endif // AUTOSAVETHREAD_H
А метод. cpp выглядит так, что файл выглядит следующим образом:
#include "autosavethread.h"
AutoSaveThread::AutoSaveThread(QObject *parent){
connect(this, SIGNAL(callTest()), parent, SLOT(testing()));
}
void AutoSaveThread::run()
{
while(true){
sleep(3);
emit callTest();
// call autosave in mainwindow.cpp
}
}
main. cpp где я создаю свои потоки следующим образом:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
AutoSaveThread myThread(&w);
myThread.start();
w.show();
return a.exec();
}
Функция теста:
void MainWindow::testing()
{
qDebug()<<"nice";
}
Когда я пытаюсь запустить этот код, я получаю следующий вывод:
Undefined symbols for architecture x86_64:
"AutoSaveThread::callTest()", referenced from:
AutoSaveThread::run() in autosavethread.o
ld: symbol(s) not found for architecture x86_64
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ:
После внесения изменений @Jens предложил получить следующую ошибку:
"AutoSaveThread::callTest()", referenced from:
AutoSaveThread::run() in autosavethread.o
"vtable for AutoSaveThread", referenced from:
AutoSaveThread::AutoSaveThread(QObject*) in autosavethread.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture x86_64