Я пытаюсь сделать визуализацию поиска максимального значения массива. Идея состоит в том, чтобы показывать положение указателя на каждой итерации. Макет сетки построен следующим образом: первая строка включает десять меток, показывающих индекс каждого элемента массива, во второй строке - десять строк редактирования со значениями массива, а в третьей - десять меток, которые могут содержать текст. (без указателя) или ^ (указатель на это значение). Это выглядит как
0 1 2 3 4 5 6 7 8 9 - ряд индексов
12 23 34 54 78 1 32 26 55 26 - стихии
_ _ _ ^ _ _ _ _ _ _ - ряд указателей
При поиске максимума указатель должен переходить к следующему элементу после каждой итерации. А для комфортного восприятия нужно подождать секунду на каждой итерации цикла. Код слота:
void Widget::slotFindMax()
{
int max = a[0];
pointer[0]->setText("^");
maxValue->setText(QString::number(max));
for (int i = 1; i < 10; i++)
{
pointer[i - 1]->setText(" ");
QThread::sleep(1);
pointer[i]->setText("^");
if (a[i] > max)
{
max = a[i];
maxValue->setText(QString::number(max));
}
}
pointer[9]->setText(" ");
}
Я вижу, что QThread :: sleep () здесь работает некорректно. Насколько я понял, QTimer :: singleShot тоже не подходит, потому что мне нужна задержка не перед обработкой слота, а во время нее. Может ли кто-нибудь, кто сталкивался с такой проблемой, привести пример правильного использования упомянутых мною функций или эквивалентный пример, который мог бы работать в этом случае?