需要写一个类似相机的app,菜单栏弹出参数qslider的列表,目前,camera子线程打开摄像头,slot函数调参,
现在建立在主窗口的qslider 可以通过connect到camera线程捕获子线程直接用opencv调参,capture.set.
但是子窗口的qslider由于没有camera线程的声明无法直接connect到camera线程,如何才能实现通信
主窗口实现connect如下
class app0 : public QMainWindow
{
Q_OBJECT
Camera* camera;
QThread thread;
QThread ocr_thread;
public:
app0(QWidget *parent = Q_NULLPTR);
~app0();
camera_index *window_a;
private:
Ui::app0Class* ui=new Ui::app0Class();
VideoCapture capture;
app0::app0(QWidget *parent)
: QMainWindow(parent)
{
ui->setupUi(this);
camera = new Camera();
camera->moveToThread(&thread); //将camera对象放在子线程,不推荐放在主线程执行。
bool n1 = connect(this, SIGNAL(cameraOperate(int)), camera, SLOT(Operate(int))); //camera的槽函数将在thread所在的线程执行, 选择打开摄像头参数
connect(ui->camera_index2, SIGNAL(valueChanged(int)), camera, SLOT(camera_index2_valueChanged(int)));
camera线程
void Camera::camera_index2_valueChanged(int Bright) {
capture.set(CAP_PROP_BRIGHTNESS, Bright);
}
子窗口无法直接通信?
#pragma once
#include <QWidget>
#include "ui_camera_index.h"
//#include "app0.h"
class camera_index : public QWidget
{
//Camera* camera;
Q_OBJECT
public:
camera_index(QWidget *parent = Q_NULLPTR);
~camera_index();
private:
Ui::camera_index ui;
};
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。