Использование QCamera / QCameraInfo из QThread

У меня есть класс Camera, который на данный момент просто возвращает количество доступных камер, подключенных к компьютеру. Объект Camera создает мой класс PhotoProcessor (QWidget), а затем перемещается в другой поток, потому что я заметил небольшое зависание при проверке доступных камер:

в photoprocessor.cpp

void PhotoProcessor::GetAvailableCameras()
{
//Create new camera to go and fetch number of cameras.
Camera *camera_connection = new Camera;

//Create thread and send away.
QThread *thread = new QThread;
camera_connection->moveToThread(thread);
connect(camera_connection, SIGNAL(CameraCountSignal(int)), this, SLOT(CameraCountSlot(int)));
connect(thread, SIGNAL(started()), camera_connection, SLOT(GetAvailableCameras()));
connect(camera_connection, SIGNAL(CloseCameraThreadSignal()), thread, SLOT(quit()));
connect(camera_connection, SIGNAL(CloseCameraThreadSignal()), camera_connection, SLOT(deleteLater()));
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();

return;
}

camera.h

#ifndef CAMERA_H
#define CAMERA_H

#include <QObject>
#include <QCamera>
#include <QCameraInfo>

class Camera : public QObject
{
Q_OBJECT

public:
Camera();

public slots:
void GetAvailableCameras();

signals:
void CameraCountSignal(int);
void CloseCameraThreadSignal();
};

#endif // CAMERA_H

camera.cpp

#include "camera.h"
Camera::Camera()
{

}

void Camera::GetAvailableCameras()
{
QList<QCameraInfo> cameras = QCameraInfo::availableCameras();
emit CameraCountSignal(cameras.size());
emit CloseCameraThreadSignal();
return;
}

При запуске QCameraInfo :: availableCameras () из photoprocessor.cpp говорится, что подключена одна камера, что правильно, однако, независимо от того, что я делаю, объект Camera с резьбой никогда не сможет обнаружить камеру, то есть размер камер равен нулю.

Что здесь происходит?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]