C ++打破另一个函数的循环

时间:2017-12-11 16:56:36

标签: c++ qt

我正在开发视频录制软件,但我遇到了问题。 我想在单击按钮停止时停止录制,但单击它时没有任何反应......

这是我的核心(简化): 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;
}

2 个答案:

答案 0 :(得分:5)

我看到它的方式是startCapture可能是从你的事件循环调用的。这会阻止处理任何其他事件。尝试将循环放入单独的线程中,看看是否有效。

答案 1 :(得分:0)

您在for循环内部进行了图像捕获,并且不会检查停止按钮是否已激活。您正在检查while循环,这可能永远不会重新开始。将if (b_stop) {break;}放在for循环中,它可能会起作用。