次の画像を取得するためにできるだけ頻繁に呼び出す必要がある特別なカメラ クラスがあります。GUI 自体には、カメラ パラメーターと画像出力の設定を変更するためのスライダーがいくつか含まれています。
これが私のクラスの簡単な構造です:
class CameraWorker : public QObject
{
Q_OBJECT
public:
CameraWorker();
signals:
void imageReady(const QImage &);
private slots:
void onCamera();
void setValue(int value);
private:
Camera camera;
};
class CameraThread : public QThread
{
Q_OBJECT
public:
CameraThread();
signals:
void imageReady(const QImage &);
void gotValue(int value);
private slots:
void getImage(const QImage &img);
void setValue(int value);
private:
void run();
};
私のメインウィンドウには以下が含まれます:
connect(ui.value, SIGNAL(valueChanged(int)), cameraThread, SLOT(setValue(int)));
私のカメラ スレッドには以下が含まれます。
void CameraThread::run()
{
CameraWorker worker;
QTimer timer;
connect(&timer, SIGNAL(timeout()), &worker, SLOT(onCamera()));
connect(&worker, SIGNAL(imageReady(const QImage &)), this, SLOT(getImage(const QImage &)));
connect(this, SIGNAL(gotValue(int)), &worker, SLOT(setValue(int)));
timer.start(0);
exec();
}
void CameraThread::setValue(int value)
{
emit gotValue(value);
}
そして、私のカメラ ワーカーには以下が含まれます。
void CameraWorker::setValue(value)
{
camera.setValue(value);
}
問題は、Signal -> Slot -> Signal -> Slot -> camera.setValue を呼び出してカメラに 1 つの値を取得する必要があることですが、値が 20 あります。これを行うより良い方法はありますか?