Je développe un logiciel d'acquisition d'image. Je veux exécuter la fonction d'affichage dans un fil séparé (pour assurer la vue en direct pour la capture d'image facile). Pour l'instant je sous-classe QObject, en créant DisplayObject et en utilisant la fonction QThread :: moveToThread. Le problème est que DisplayObject doit interagir avec l'interface graphique (les images doivent être affichées dans les objets QGraphicsView). Quelle est la meilleure (et la plus élégante) façon de faire cela?QThread interaction avec GUI
Ma solution actuelle:
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 est initialisé comme ci-dessous:
DisplayObject Displayer;
Displayer.addDetectorSystem(PGRSystem);
Displayer.connectGui(this);
QThread thread;
Displayer.moveToThread(&thread);
connect(this, SIGNAL(display()), &Displayer, SLOT(display()));
thread.start();
J'ai oublié d'admettre, que cela ne fonctionne pas ...
Quelle est la portée de ce code: DisplayObject Displayer; Displayer.addDetectorSystem (PGRSystem); Displayer.connectGui (this); Fil QThread; Displayer.moveToThread (& thread); connect (ceci, SIGNAL (affichage()), & Displayer, SLOT (affichage())); thread.start(); –
Ces initialisations sont incluses dans le constructeur de classe ImageAquisition (la classe GUI principale). – Marcin