这是Qt界面,想通过刷新来获取摄像头个数

int max = 0;
CvCapture* tmp = NULL;
//创建图像捕获缓存
while ((tmp = cvCreateCameraCapture(max++))!= NULL);
cvReleaseCapture(&tmp);
tmp = NULL;
for (int i = 0; i < max - 1 ; ++i)
{
cameraComboBox->addItem(tr("[ NO. %1 ]").arg(i + 1));
}
下面这段代码实现不了,可以获取摄像头个数,但是问题来了,我把摄像头拔了,刷新后,还是显示是两个摄像头,而且即使把Qt界面关闭,编译器上显示

很显然,程序并没有结束,也不知道是什么问题,但肯定的是,问题出在上面这段代码中。
下面这段代码没有问题,可以实现,但是总觉得不够好。
int max = 9;
CvCapture* tmp = NULL;
//创建图像捕获缓存
while (max >= 0 && (tmp = cvCreateCameraCapture(max--)) == NULL)
;
if((tmp = cvCreateCameraCapture(max+1)) == NULL) max--;
cvReleaseCapture(&tmp);
for(int i = 0; i < max+2 ; i++)
{
cameraComboBox->addItem(tr("[ NO. %1 ]").arg(i + 1));
}
求大神帮忙解决
------解决思路----------------------
貌似OPENCV获得的摄像头个数是有问题的。 可以用Qt的CAMERA类来获取个数 , 控制用opencv来控制
------解决思路----------------------
楼主和楼上的也是在Qt中使用OpenCV吗?我最近也在学这一部分,可否留下联系方式以便交流?