我正在开发图像采集软件。我想在单独的线程中运行显示功能(以确保实时取景以便于图像捕获)。现在我正在继承 QObject,创建 DisplayObject 并使用 QThread::moveToThread 函数。问题是 DisplayObject 必须与 GUI 交互(图像需要在 QGraphicsView 对象中显示)。最好(也是最优雅)的方法是什么?
我目前的解决方案:
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();
我忘了承认,这行不通……