summaryrefslogtreecommitdiffstats
path: root/examples/multimediawidgets/camera/camera.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/multimediawidgets/camera/camera.cpp')
-rw-r--r--examples/multimediawidgets/camera/camera.cpp29
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);
+ }
+}