diff --git a/window.cpp b/window.cpp index 9e227830f233e07a08326a842bbde1a950c3f1b7..516e8bb44bd2e465c922b7201f1bf670c48bea5f 100644 --- a/window.cpp +++ b/window.cpp @@ -9,6 +9,7 @@ #include <QHBoxLayout> #include <QVBoxLayout> #include <QSpacerItem> +#include <QTimer> Window::Window(QWidget *parent) : QWidget{parent} @@ -85,19 +86,19 @@ void Window::solveButtonClicked() while (1) { repaint(); // draw cells again - QThread::msleep(m_delay); + delay(m_delay); if (backtracking) { hist.back()->cell->un(); if (hist.back()->index.size() == 0) { - hist.pop_back(); - continue; - } + hist.pop_back(); + continue; + } backtracking = false; int choiceNr = rand() % hist.back()->index.size(); // choose a random number; repaint(); // draw cells again - QThread::msleep(m_delay); + delay(m_delay); hist.back()->cell->collapse(hist.back()->index[choiceNr]); // collapse cell with chosen number; std::vector<int>::iterator it; it = hist.back()->index.begin() + choiceNr; @@ -145,7 +146,14 @@ void Window::solveButtonClicked() } // qInfo("%d---:)"); } - +inline void Window::delay(int millisecondsWait) +{ + QEventLoop loop; + QTimer t; + t.connect(&t, &QTimer::timeout, &loop, &QEventLoop::quit); + t.start(millisecondsWait); + loop.exec(); +} void Window::clearButtonClicked() { for (auto &x : m_cell) diff --git a/window.h b/window.h index f05749a47fbaa7e251aed4760e7cdb311d9a9c46..8347cee0f1204e6a52c27094abd833b0e2fd72ee 100644 --- a/window.h +++ b/window.h @@ -35,6 +35,7 @@ private: } } }; + inline void delay(int millisecondsWait); signals: void counterReached();