Powoli zbieram to jakoś do kupy, sorry za tyle wątków, ale czas mnie goni z projektem a przez nawał innych przedmiotów straciłem balans.
Więc tak, w klasie MainLoop, która dziedziczy QThread odpalam pętle, która znajdując elementy w kolejce "oczekujace" wyzwala sygnal co 2 sek za pomoca QTimer::SingleShot. Ten sygnał potrzebuje przechwycić w MainWindow i odpalić odpowiedni slot;
#include "mainloop.h"
#include "includes.h"
#include "mainwindow.h"
#include <QTimer>
MainLoop::MainLoop()
{
run();
}
void MainLoop::run()
{
while(1){
if(MainWindow::oczekujace.empty()) continue;
else{
QTimer::singleShot(2000, this, SLOT(emit_move()));
}
}
}
void MainLoop::emit_move()
{
emit move();
}
MainLoop definiuje wewnątrz konstruktora MainWindow:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MainLoop loop;
count = 0; wolne = 0;
connect(&loop, SIGNAL(move()), this, SLOT(MoveItemToAir()));
}
Tylko otrzumuje błędy undefined reference to vtable for MainLoop i for MainLoop::move ;
Co robię źle?