我正在开发视频录制软件,但我遇到了问题。 我想在单击按钮停止时停止录制,但单击它时没有任何反应......
这是我的核心(简化): MySoftware.hpp:
bool b_Stop = false;
MySoftware.cpp
MainWindow::MainWindow() : QWidget() {
qpb_StartCapture = new QPushButton("Start Capture", this);
QObject::connect(qpb_StartCapture, SIGNAL(clicked()), this, SLOT(startCapture()));
qpb_StopCapture = new QPushButton("Stop Capture", this);
QObject::connect(qpb_StopCapture, SIGNAL(clicked()), this, SLOT(stopCapture()));
}
void MainWindow::startCapture() {
b_Stop = false;
// CAMERAS INITIALIZATION
while (!b_Stop) {
for (int i = 0; i < v_cp_Cameras.size(); i++) {
// IMAGE CAPTURE
}
}
// IMAGES PROCESSING
}
void MainWindow::stopCapture() {
b_Stop = true;
}
答案 0 :(得分:5)
我看到它的方式是startCapture
可能是从你的事件循环调用的。这会阻止处理任何其他事件。尝试将循环放入单独的线程中,看看是否有效。
答案 1 :(得分:0)
您在for循环内部进行了图像捕获,并且不会检查停止按钮是否已激活。您正在检查while循环,这可能永远不会重新开始。将if (b_stop) {break;}
放在for循环中,它可能会起作用。