我正在開發圖像採集軟件。我想在單獨的線程中運行顯示功能(以確保實時查看以便於圖像捕獲)。現在我是繼承QObject,創建DisplayObject並使用QThread :: moveToThread函數。問題是DisplayObject必須與GUI交互(圖像需要在QGraphicsView對象中顯示)。什麼是最好的(也是最優雅的)方法呢?QThread與GUI的交互
我目前的解決方案:
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(this); QThread線程; Displayer.moveToThread(&thread); (this,SIGNAL(display()),&Displayer,SLOT(display())); thread.start(); – 2010-10-26 07:30:22
這些初始化包含在ImageAquisition類構造函數(主GUI類)中。 – Marcin 2010-10-26 09:24:13