Мне интересно, какова процедура, чтобы иметь один поток и принадлежать этому потоку один рабочий, который имеет несколько процессов. Если это не имеет особого смысла, надеюсь, приведенный ниже код должен объяснить:
// WORKER.H //
class Worker : public QObject
{
Q_OBJECT
Public:
Worker(QObject *parent = nullptr);
Public Slots:
void process1(int x);
void process2(int y);
void process3(int z);
signals:
void sendResult(int result);
}
// CONTROLLER.H //
class controller : public QObject
{
Q_OBJECT
public:
controller(QObject *parent = nullptr);
signals:
operate();
public slots:
void storeResults(const int);
private:
QThread myThread;
}
// КОНТРОЛЛЕР. CPP // Я дам только конструктору
Controller::Controller(QObject *parent) : QObject(parent)
{
Worker *worker = new Worker;
worker->moveToThread(&myThread);
//connections
connect(&myThread, &QThread::finished, worker, &QObject::deleteLater);
connect(this, &Controller::operate, worker, &Worker::process1);
connect(this, &Controller::operate, worker, &Worker::process2);
connect(this, &Controller::operate, worker, &Worker::process3);
connect(worker, &Worker::sendResult, this, &Controller::storeResult);
myThread.start();
}
Чего я надеюсь добиться здесь, так это системы, в которую получат три слота процессов в рабочем классе. данные из сигналов от GUI. эти сигналы будут постоянно приниматься в течение всей жизни программы. Как только данный сигнал получен, он должен быть обработан, и результат обработки будет передан в слот результата хранения.
Достигнет ли этот код того, чего я ожидаю, или я что-то пропускаю?
Большое спасибо