diff --git a/src/qcam/cam_select_dialog.cpp b/src/qcam/cam_select_dialog.cpp
index a49d822b..f82930cc 100644
--- a/src/qcam/cam_select_dialog.cpp
+++ b/src/qcam/cam_select_dialog.cpp
@@ -48,3 +48,15 @@ std::string CameraSelectorDialog::getCameraId()
 {
 	return cameraIdComboBox_->currentText().toStdString();
 }
+
+/* Hotplug / Unplug Support. */
+void CameraSelectorDialog::addCamera(QString camearaId)
+{
+	cameraIdComboBox_->addItem(camearaId);
+}
+
+void CameraSelectorDialog::removeCamera(QString cameraId)
+{
+	int cameraIndex = cameraIdComboBox_->findText(cameraId);
+	cameraIdComboBox_->removeItem(cameraIndex);
+}
diff --git a/src/qcam/cam_select_dialog.h b/src/qcam/cam_select_dialog.h
index c31f4f82..bd2dbc1e 100644
--- a/src/qcam/cam_select_dialog.h
+++ b/src/qcam/cam_select_dialog.h
@@ -13,6 +13,7 @@
 #include <libcamera/camera_manager.h>
 
 #include <QDialog>
+#include <QString>
 
 class QComboBox;
 
@@ -27,6 +28,10 @@ public:
 
 	std::string getCameraId();
 
+	/* Hotplug / Unplug Support. */
+	void addCamera(QString cameraId);
+	void removeCamera(QString cameraId);
+
 private:
 	libcamera::CameraManager *cm_;
 
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 14bcf03e..e8e22d49 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -587,10 +587,12 @@ void MainWindow::stopCapture()
 void MainWindow::processHotplug(HotplugEvent *e)
 {
 	Camera *camera = e->camera();
+	QString cameraId = QString::fromStdString(camera->id());
 	HotplugEvent::PlugEvent event = e->hotplugEvent();
 
 	if (event == HotplugEvent::HotPlug) {
-		cameraCombo_->addItem(QString::fromStdString(camera->id()));
+		cameraCombo_->addItem(cameraId);
+		cameraSelectorDialog_->addCamera(cameraId);
 	} else if (event == HotplugEvent::HotUnplug) {
 		/* Check if the currently-streaming camera is removed. */
 		if (camera == camera_.get()) {
@@ -600,8 +602,9 @@ void MainWindow::processHotplug(HotplugEvent *e)
 			cameraCombo_->setCurrentIndex(0);
 		}
 
-		int camIndex = cameraCombo_->findText(QString::fromStdString(camera->id()));
+		int camIndex = cameraCombo_->findText(cameraId);
 		cameraCombo_->removeItem(camIndex);
+		cameraSelectorDialog_->removeCamera(cameraId);
 	}
 }
 
