Я разрабатываю программное обеспечение для сбора изображений. Я хочу запустить функцию отображения в отдельном потоке (чтобы обеспечить живой просмотр для легкого захвата изображения). На данный момент я подклассифицирую QObject, создавая DisplayObject и используя функцию QThread :: moveToThread. Проблема заключается в том, что DisplayObject должен взаимодействовать с графическим интерфейсом (изображения должны отображаться в объектах QGraphicsView). Какой лучший (и самый элегантный) способ сделать это?QThread взаимодействие с графическим интерфейсом
Мое текущее решение:
class DisplayObject : public QObject
{
Q_OBJECT
public:
inline void addDetectorSystem(cci::PGR* system);
inline void connectGui(ImageAquisition* gui);
public slots:
void display();
private:
cci::PGR* camSystem;
ImageAquisition* guiClass;
};
DisplayObject инициализируется, как показано ниже:
DisplayObject Displayer;
Displayer.addDetectorSystem(PGRSystem);
Displayer.connectGui(this);
QThread thread;
Displayer.moveToThread(&thread);
connect(this, SIGNAL(display()), &Displayer, SLOT(display()));
thread.start();
Я забыл признать, что он не работает ...
Какова область действия этого кода: DisplayObject Displayer; Displayer.addDetectorSystem (PGRSystem); Displayer.connectGui (это); QThread thread; Displayer.moveToThread (& thread); connect (это, СИГНАЛ (дисплей()) и Displayer, SLOT (дисплей())); thread.start(); –
Эти инициализации включены в конструктор класса ImageAquisition (основной класс GUI). – Marcin