diff options
Diffstat (limited to 'examples/multimediawidgets/camera/camera.cpp')
-rw-r--r-- | examples/multimediawidgets/camera/camera.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/examples/multimediawidgets/camera/camera.cpp b/examples/multimediawidgets/camera/camera.cpp index 196b8ba84..385608bbc 100644 --- a/examples/multimediawidgets/camera/camera.cpp +++ b/examples/multimediawidgets/camera/camera.cpp @@ -73,18 +73,10 @@ Camera::Camera() : ui(new Ui::Camera) //Camera devices: - QActionGroup *videoDevicesGroup = new QActionGroup(this); + videoDevicesGroup = new QActionGroup(this); videoDevicesGroup->setExclusive(true); - const QList<QCameraInfo> availableCameras = QMediaDeviceManager::videoInputs(); - for (const QCameraInfo &cameraInfo : availableCameras) { - QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup); - videoDeviceAction->setCheckable(true); - videoDeviceAction->setData(QVariant::fromValue(cameraInfo)); - if (cameraInfo == QMediaDeviceManager::defaultVideoInput()) - videoDeviceAction->setChecked(true); - - ui->menuDevices->addAction(videoDeviceAction); - } + updateCameras(); + connect(QMediaDeviceManager::instance(), &QMediaDeviceManager::videoInputsChanged, this, &Camera::updateCameras); connect(videoDevicesGroup, &QActionGroup::triggered, this, &Camera::updateCameraDevice); connect(ui->captureWidget, &QTabWidget::currentChanged, this, &Camera::updateCaptureMode); @@ -433,3 +425,18 @@ void Camera::closeEvent(QCloseEvent *event) event->accept(); } } + +void Camera::updateCameras() +{ + ui->menuDevices->clear(); + const QList<QCameraInfo> availableCameras = QMediaDeviceManager::videoInputs(); + for (const QCameraInfo &cameraInfo : availableCameras) { + QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup); + videoDeviceAction->setCheckable(true); + videoDeviceAction->setData(QVariant::fromValue(cameraInfo)); + if (cameraInfo == QMediaDeviceManager::defaultVideoInput()) + videoDeviceAction->setChecked(true); + + ui->menuDevices->addAction(videoDeviceAction); + } +} |